Skip to content

remove coveralls

remove coveralls #114

Workflow file for this run

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 }}