Language Feature: Static generic class variables #69
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: CI (build & test) | |
| on: | |
| push: | |
| branches: [ master ] | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| name: Gradle build on ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest] | |
| runs-on: ${{ matrix.os }} | |
| permissions: | |
| contents: read | |
| env: | |
| GRADLE_OPTS: -Dorg.gradle.daemon=false | |
| defaults: | |
| run: | |
| working-directory: de.peeeq.wurstscript | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| # Always install a JDK first (Windows uses this; Linux will be overridden below for jlink) | |
| - name: Setup Temurin JDK 25 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: '25' | |
| cache: 'gradle' | |
| # On Ubuntu, fetch a *portable* pristine Temurin JDK 25 just for jlink (isolated from system JDKs) | |
| - name: (Linux) Install portable Temurin 25 for jlink | |
| if: runner.os == 'Linux' | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| VER="25.0.0+36" | |
| BASE="jdk-25.0.0+36" | |
| URL="https://github.com/adoptium/temurin25-binaries/releases/download/${BASE}/OpenJDK25U-jdk_x64_linux_hotspot_25.0.0_36.tar.gz" | |
| mkdir -p "$RUNNER_TEMP/temurin25" | |
| echo "Downloading $URL" | |
| curl -L "$URL" -o "$RUNNER_TEMP/temurin25/jdk.tar.gz" | |
| tar -xzf "$RUNNER_TEMP/temurin25/jdk.tar.gz" -C "$RUNNER_TEMP/temurin25" | |
| PORTABLE_JAVA_HOME="$(find "$RUNNER_TEMP/temurin25" -maxdepth 1 -type d -name 'jdk-25*' | head -n1)" | |
| echo "PORTABLE_JAVA_HOME=$PORTABLE_JAVA_HOME" >> "$GITHUB_ENV" | |
| echo "$PORTABLE_JAVA_HOME/bin" >> "$GITHUB_PATH" | |
| # Pin Gradle toolchain discovery to whatever JAVA_HOME is active at execution time | |
| - name: Pin Gradle toolchain | |
| shell: bash | |
| run: | | |
| # If we installed a portable JDK (Linux), use that; otherwise use setup-java's JAVA_HOME. | |
| ACTIVE_JAVA_HOME="${PORTABLE_JAVA_HOME:-$JAVA_HOME}" | |
| echo "org.gradle.java.installations.paths=${ACTIVE_JAVA_HOME}" >> gradle.properties | |
| echo "org.gradle.java.installations.auto-detect=false" >> gradle.properties | |
| echo "JAVA_HOME=${ACTIVE_JAVA_HOME}" >> "$GITHUB_ENV" | |
| echo "${ACTIVE_JAVA_HOME}/bin" >> "$GITHUB_PATH" | |
| # Sanity print (bash works on both runners) | |
| - name: Show Java & jlink | |
| shell: bash | |
| run: | | |
| echo "JAVA_HOME=$JAVA_HOME" | |
| "$JAVA_HOME/bin/java" -version | |
| "$JAVA_HOME/bin/jlink" --version | |
| - name: Validate Gradle wrapper | |
| uses: gradle/actions/wrapper-validation@v4 | |
| - name: Setup Gradle (cache) | |
| uses: gradle/actions/setup-gradle@v4 | |
| # ---------- FAIL FAST: build slim runtime + package BEFORE tests ---------- | |
| - name: Package slim runtime (fail fast) | |
| shell: bash | |
| run: ./gradlew checksumSlimCompilerDist --no-daemon --stacktrace | |
| # If packaging passed, *then* run tests | |
| - name: Run tests | |
| shell: bash | |
| run: ./gradlew test --no-daemon --stacktrace | |
| - name: Upload packaged artifact (per-OS) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wurst-compiler-${{ matrix.os }} | |
| path: | | |
| de.peeeq.wurstscript/build/releases/*.zip | |
| de.peeeq.wurstscript/build/releases/*.tar.gz | |
| de.peeeq.wurstscript/build/releases/*.sha256 | |
| if-no-files-found: error | |
| retention-days: 7 |