Skip to content

CI: build once, run on multiple JDKs #302

CI: build once, run on multiple JDKs

CI: build once, run on multiple JDKs #302

Workflow file for this run

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