Test parallel test actions #7946
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 | |
| JAVA_VERSION=21 # Java version for the transformation | |
| # Convert to array and transform | |
| IFS=',' read -ra ENVS <<< "$ENVIRONMENTS" | |
| TRANSFORMED=() | |
| for env in "${ENVS[@]}"; do | |
| TRANSFORMED+=("java${JAVA_VERSION}/paper-${env}") | |
| done | |
| TOTAL=${#TRANSFORMED[@]} | |
| # 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${TRANSFORMED[$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/* |