Skip to content

Test parallel test actions #7945

Test parallel test actions

Test parallel test actions #7945

Workflow file for this run

name: Java 21 CI (MC 1.20.6+)
on:
push:
branches:
- master
- 'dev/**'
pull_request:
# environments = 1.20.6,1.21.3,1.21.4,1.21.5,1.21.8,1.21.10
jobs:
prepare:
if: "! contains(toJSON(github.event.commits.*.message), '[ci skip]')"
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Generate matrix
id: set-matrix
run: |
# Define environments and number of splits
ENVIRONMENTS="1.20.6,1.21.3,1.21.4,1.21.5,1.21.8,1.21.10"
N=3 # Change this to your desired number of parallel jobs
# Convert to array
IFS=',' read -ra ENVS <<< "$ENVIRONMENTS"
TOTAL=${#ENVS[@]}
# Calculate actual number of jobs (min of N and total environments)
JOBS=$((TOTAL < N ? TOTAL : N))
# Calculate environments per job
BASE=$((TOTAL / JOBS))
EXTRA=$((TOTAL % JOBS))
# Build matrix JSON
MATRIX="["
INDEX=0
for ((i=0; i<JOBS; i++)); do
COUNT=$BASE
if [ $i -lt $EXTRA ]; then
COUNT=$((COUNT + 1))
fi
GROUP=""
for ((j=0; j<COUNT; j++)); do
if [ -n "$GROUP" ]; then
GROUP="$GROUP,"
fi
GROUP="$GROUP${ENVS[$INDEX]}"
INDEX=$((INDEX + 1))
done
if [ $i -gt 0 ]; then
MATRIX="$MATRIX,"
fi
MATRIX="$MATRIX{\"id\":$((i+1)),\"envs\":\"$GROUP\"}"
done
MATRIX="$MATRIX]"
echo "matrix={\"include\":$MATRIX}" >> $GITHUB_OUTPUT
echo "Generated matrix: {\"include\":$MATRIX}"
build:
needs: prepare
runs-on: ubuntu-latest
strategy:
matrix: ${{ fromJSON(needs.prepare.outputs.matrix) }}
steps:
- uses: actions/checkout@v5
with:
submodules: recursive
- name: validate gradle wrapper
uses: gradle/actions/wrapper-validation@v4
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
java-version: '21'
distribution: 'adopt'
cache: gradle
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build Skript and run test scripts
run: ./gradlew clean customTest -PtestEnvs="${{ matrix.envs }}" -PtestEnvJavaVersion=21
- name: Upload Nightly Build
uses: actions/upload-artifact@v4
if: success()
with:
name: skript-nightly-${{ matrix.id }}
path: build/libs/*