remove coveralls #114
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 packageSlimCompilerDist --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 | |
| steps: | |
| - name: Download all packaged artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| - name: Gather files (zip only) | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| mkdir -p upload | |
| find artifacts -type f -name '*.zip' -print0 | xargs -0 -I{} cp "{}" upload/ | |
| - name: Verify we have both platform zips | |
| shell: bash | |
| run: | | |
| shopt -s nullglob | |
| zips=(upload/*.zip) | |
| echo "Found ${#zips[@]} zip(s):"; ls -alh upload | |
| if (( ${#zips[@]} < 2 )); then | |
| echo "ERROR: expected at least Win + Linux zips." | |
| exit 1 | |
| fi | |
| - name: Normalize nightly filenames | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| for f in upload/*.zip; do | |
| base="$(basename "$f")" | |
| stem="${base%.zip}" | |
| new_stem="$(echo "$stem" | sed -E 's/-[0-9]+(\.[0-9]+)*-/-nightly-/' )" | |
| new="upload/${new_stem}.zip" | |
| if [[ "upload/$base" != "$new" ]]; then mv -f "upload/$base" "$new"; fi | |
| done | |
| echo "Renamed to:"; ls -alh upload | |
| # Delete old release + tag, then create a fresh one at HEAD | |
| - name: Recreate nightly release and tag at HEAD | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const { owner, repo } = context.repo; | |
| const tag = 'nightly'; | |
| // Delete existing release (if any) | |
| try { | |
| const rel = await github.rest.repos.getReleaseByTag({ owner, repo, tag }); | |
| await github.rest.repos.deleteRelease({ owner, repo, release_id: rel.data.id }); | |
| core.info(`Deleted release id=${rel.data.id}`); | |
| } catch (e) { | |
| core.info(`No previous release to delete: ${e.message}`); | |
| } | |
| // Delete tag (if any) | |
| try { | |
| await github.rest.git.deleteRef({ owner, repo, ref: `tags/${tag}` }); | |
| core.info('Deleted ref tags/nightly'); | |
| } catch (e) { | |
| core.info(`No existing tag to delete: ${e.message}`); | |
| } | |
| // Create fresh prerelease at the current commit | |
| const { data: rel2 } = await github.rest.repos.createRelease({ | |
| owner, repo, | |
| tag_name: tag, | |
| target_commitish: context.sha, | |
| name: 'Nightly Build (master)', | |
| body: 'Nightly build for the latest commit on `master`.\nThis release is automatically updated on each push.', | |
| draft: false, | |
| prerelease: true, | |
| make_latest: 'false' // MUST be a string | |
| }); | |
| core.setOutput('upload_url', rel2.upload_url); | |
| - name: Publish Nightly Release (upload assets) | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: nightly | |
| target_commitish: ${{ github.sha }} | |
| prerelease: true | |
| draft: false | |
| make_latest: "false" # keep as string here too | |
| name: Nightly Build (master) | |
| body: | | |
| Nightly build for the latest commit on `master`. | |
| This release is automatically updated on each push. | |
| files: upload/** | |
| fail_on_unmatched_files: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |