CI: build once, run on multiple JDKs #302
This file contains 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: Main | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
env: | |
COURSIER_CACHE: ${{ github.workspace }}/.cache/coursier | |
# Retention period of the generated artifacts (main and JMH Renaissance JARs) | |
# (Using the pseudo-ternary operator here, the retention can be 1 to 90 days) | |
ARTIFACT_RETENTION_DAYS: ${{ ((github.event_name == 'push') && (github.ref == 'refs/heads/master')) && 30 || 4 }} | |
jobs: | |
checks: | |
runs-on: ubuntu-latest | |
container: "ghcr.io/renaissance-benchmarks/renaissance-buildenv:v12-openjdk23" | |
steps: | |
- name: Git checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Git safe directory | |
shell: bash | |
run: git config --global --add safe.directory $GITHUB_WORKSPACE | |
- name: Coursier downloads cache | |
uses: actions/cache@v4 | |
with: | |
key: coursier_cache-${{ runner.os }}-${{ hashFiles('build.sbt') }} | |
path: ${{ env.COURSIER_CACHE }} | |
- name: Check file encoding | |
shell: bash | |
run: tools/ci/check-encoding.sh | |
- name: Check source code formatting | |
shell: bash | |
run: tools/ci/check-formatting.sh | |
- name: Build the base bundle | |
shell: bash | |
run: tools/ci/build-base.sh | |
- name: Check generated files are up-to-date | |
shell: bash | |
run: tools/ci/check-markdown.sh | |
build: | |
runs-on: ubuntu-latest | |
container: "ghcr.io/renaissance-benchmarks/renaissance-buildenv:v12-openjdk11-with-ant-gcc" | |
steps: | |
- name: Git checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Git safe directory | |
shell: bash | |
run: git config --global --add safe.directory $GITHUB_WORKSPACE | |
- name: Environment configuration | |
shell: bash | |
run: tools/ci/pre-show-env.sh | |
- name: Coursier downloads cache | |
uses: actions/cache@v4 | |
with: | |
key: coursier_cache-${{ runner.os }}-${{ hashFiles('build.sbt') }} | |
path: ${{ env.COURSIER_CACHE }} | |
- name: Build both base & JMH bundles | |
shell: bash | |
run: tools/ci/build-both.sh | |
- name: Check JMH bundle | |
shell: bash | |
run: tools/ci/check-jmh.sh | |
- name: Upload the main JAR | |
uses: actions/upload-artifact@v4 | |
with: | |
name: main-jar | |
path: target/renaissance-*.jar | |
retention-days: ${{ env.ARTIFACT_RETENTION_DAYS }} | |
- name: Upload JMH JAR | |
uses: actions/upload-artifact@v4 | |
with: | |
name: jmh-jar | |
path: renaissance-jmh/target/renaissance-*.jar | |
retention-days: ${{ env.ARTIFACT_RETENTION_DAYS }} | |
run-linux: | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
image: | |
- openjdk11 | |
- openjdk17 | |
- openjdk21 | |
- openjdk23 | |
- openj9-openjdk11 | |
- openj9-openjdk17 | |
- openj9-openjdk21 | |
runs-on: ubuntu-latest | |
container: "ghcr.io/renaissance-benchmarks/renaissance-buildenv:v12-${{ matrix.image }}" | |
steps: | |
- name: Git checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Git safe directory | |
shell: bash | |
run: git config --global --add safe.directory $GITHUB_WORKSPACE | |
- name: Environment configuration | |
shell: bash | |
run: tools/ci/pre-show-env.sh | |
- name: Fetch pre-built main JAR | |
uses: actions/download-artifact@v4 | |
with: | |
name: main-jar | |
path: target | |
- name: Fetch pre-built JMH JAR | |
uses: actions/download-artifact@v4 | |
with: | |
name: jmh-jar | |
path: renaissance-jmh/target | |
- name: Run the suite | |
shell: bash | |
run: tools/ci/bench-base.sh | |
- name: Run the suite in standalone mode | |
shell: bash | |
run: tools/ci/bench-standalone.sh | |
- name: Run the suite with JMH | |
shell: bash | |
run: tools/ci/bench-jmh.sh | |
run-macos: | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
java: [ '11', '17', '21', '23' ] | |
runs-on: macos-latest | |
steps: | |
- name: Git checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Git safe directory | |
shell: bash | |
run: git config --global --add safe.directory $GITHUB_WORKSPACE | |
- name: Setup correct Java version | |
uses: actions/setup-java@v4 | |
with: | |
distribution: temurin | |
java-version: ${{ matrix.java }} | |
- name: Environment configuration | |
shell: bash | |
run: tools/ci/pre-show-env.sh | |
- name: Fetch pre-built main JAR | |
uses: actions/download-artifact@v4 | |
with: | |
name: main-jar | |
path: target | |
- name: Fetch pre-built JMH JAR | |
uses: actions/download-artifact@v4 | |
with: | |
name: jmh-jar | |
path: renaissance-jmh/target | |
- name: Run the suite | |
shell: bash | |
run: tools/ci/bench-base.sh | |
- name: Run the suite in standalone mode | |
shell: bash | |
run: tools/ci/bench-standalone.sh | |
- name: Run the suite with JMH | |
shell: bash | |
run: tools/ci/bench-jmh.sh | |
run-windows: | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
java: [ '11', '17', '21', '23' ] | |
runs-on: windows-latest | |
steps: | |
- name: Git checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Git safe directory | |
shell: bash | |
run: git config --global --add safe.directory $GITHUB_WORKSPACE | |
- name: Setup correct Java version | |
uses: actions/setup-java@v4 | |
with: | |
distribution: temurin | |
java-version: ${{ matrix.java }} | |
- name: Environment configuration | |
shell: bash | |
run: tools/ci/pre-show-env.sh | |
- name: Fetch pre-built main JAR | |
uses: actions/download-artifact@v4 | |
with: | |
name: main-jar | |
path: target | |
- name: Fetch pre-built JMH JAR | |
uses: actions/download-artifact@v4 | |
with: | |
name: jmh-jar | |
path: renaissance-jmh/target | |
- name: Run the suite | |
shell: bash | |
run: tools/ci/bench-base.sh | |
- name: Run the suite in standalone mode | |
shell: bash | |
run: tools/ci/bench-standalone.sh | |
- name: Run the suite with JMH | |
shell: bash | |
run: tools/ci/bench-jmh.sh | |
plugins: | |
runs-on: ubuntu-latest | |
needs: build | |
container: "ghcr.io/renaissance-benchmarks/renaissance-buildenv:v12-openjdk11-with-ant-gcc" | |
steps: | |
- name: Git checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Git safe directory | |
shell: bash | |
run: git config --global --add safe.directory $GITHUB_WORKSPACE | |
- name: Environment configuration | |
shell: bash | |
run: tools/ci/pre-show-env.sh | |
- name: Coursier downloads cache | |
uses: actions/cache@v4 | |
with: | |
key: coursier_cache-${{ runner.os }}-${{ hashFiles('build.sbt') }} | |
path: ${{ env.COURSIER_CACHE }} | |
- name: Build base | |
shell: bash | |
run: tools/ci/build-base.sh | |
- name: Build plugins | |
shell: bash | |
run: tools/ci/build-plugins.sh | |
- name: Run the suite with all plugins | |
shell: bash | |
run: tools/ci/bench-plugins.sh |