re-add nightly releases #74
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 | |
| - name: Setup Temurin JDK 25 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: '25' | |
| cache: 'gradle' | |
| # Linux only: use a portable, pristine Temurin 25 for jlink | |
| - name: (Linux) Install portable Temurin 25 | |
| if: runner.os == 'Linux' | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| URL="https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25%2B36/OpenJDK25U-jdk_x64_linux_hotspot_25_36.tar.gz" | |
| mkdir -p "$RUNNER_TEMP/temurin25" | |
| curl -fsSL "$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 to the active JDK (portable on Linux, setup-java on Windows) | |
| - name: Pin Gradle toolchain | |
| shell: bash | |
| run: | | |
| ACTIVE_JAVA_HOME="${PORTABLE_JAVA_HOME:-$JAVA_HOME}" | |
| echo "JAVA_HOME=${ACTIVE_JAVA_HOME}" >> "$GITHUB_ENV" | |
| echo "${ACTIVE_JAVA_HOME}/bin" >> "$GITHUB_PATH" | |
| echo "org.gradle.java.installations.paths=${ACTIVE_JAVA_HOME}" >> gradle.properties | |
| echo "org.gradle.java.installations.auto-detect=false" >> gradle.properties | |
| - 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: package first (so jlink issues show immediately) ---- | |
| - name: Package slim runtime (fail fast) | |
| shell: bash | |
| run: ./gradlew checksumSlimCompilerDist --no-daemon --stacktrace | |
| - 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 | |
| nightly_release: | |
| name: Nightly prerelease (master) | |
| needs: build | |
| if: github.ref == 'refs/heads/master' && github.event_name == 'push' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write # needed to publish a Release with GITHUB_TOKEN | |
| steps: | |
| - name: Download all packaged artifacts | |
| # grabs every artifact your matrix uploaded (keeps your names) | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| - name: Gather files | |
| shell: bash | |
| run: | | |
| mkdir -p upload | |
| # pick up what your existing packaging already produced | |
| find artifacts -type f \( -name '*.zip' -o -name '*.tar.gz' -o -name '*.sha256' \) -print0 | xargs -0 -I{} cp "{}" upload/ | |
| - name: Publish Nightly Release (rolling "nightly" tag) | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: nightly | |
| name: Nightly ${{ github.run_id }} | |
| prerelease: true | |
| draft: false | |
| make_latest: false | |
| generate_release_notes: false | |
| files: | | |
| upload/*.zip | |
| upload/*.tar.gz | |
| upload/*.sha256 | |
| fail_on_unmatched_files: true | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |