Add http4k benchmark (see #451) #430
Workflow file for this run
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: 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 }} | |
| BUILDENV_IMAGE_BASE: ghcr.io/renaissance-benchmarks/renaissance-buildenv | |
| BUILDENV_IMAGE_VERSION: v19 | |
| jobs: | |
| # Hack: this job exposes selected 'env' variables as job outputs so that other | |
| # jobs can use them in job-level keys, such as 'container', where access to | |
| # the 'env' context is prohibited. We cannot use the external 'vars' context, | |
| # because we need the values of the common 'env' variables to be versioned. | |
| setup: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| BUILDENV_IMAGE_BASE: ${{ steps.vars.outputs.BUILDENV_IMAGE_BASE }} | |
| BUILDENV_IMAGE_VERSION: ${{ steps.vars.outputs.BUILDENV_IMAGE_VERSION }} | |
| steps: | |
| - name: Expose specific variables as outputs | |
| id: vars | |
| # Expose common values from the 'env' context inside the 'run' key. | |
| run: | | |
| echo "BUILDENV_IMAGE_BASE=${{ env.BUILDENV_IMAGE_BASE }}" >> "$GITHUB_OUTPUT" | |
| echo "BUILDENV_IMAGE_VERSION=${{ env.BUILDENV_IMAGE_VERSION }}" >> "$GITHUB_OUTPUT" | |
| style: | |
| needs: setup | |
| runs-on: ubuntu-latest | |
| container: ${{ format('{0}:{1}-openjdk25', needs.setup.outputs.BUILDENV_IMAGE_BASE, needs.setup.outputs.BUILDENV_IMAGE_VERSION) }} | |
| # We rarely build for more than 3 minutes | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Git checkout | |
| uses: actions/checkout@v6 | |
| 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@v5 | |
| 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 | |
| build: | |
| needs: setup | |
| runs-on: ubuntu-latest | |
| container: ${{ format('{0}:{1}-openjdk21', needs.setup.outputs.BUILDENV_IMAGE_BASE, needs.setup.outputs.BUILDENV_IMAGE_VERSION) }} | |
| # We rarely build for more than 3 minutes | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Git checkout | |
| uses: actions/checkout@v6 | |
| 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@v5 | |
| 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@v7 | |
| with: | |
| name: main-jar | |
| path: target/renaissance-*.jar | |
| retention-days: ${{ env.ARTIFACT_RETENTION_DAYS }} | |
| - name: Upload JMH JAR | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: jmh-jar | |
| path: renaissance-jmh/target/renaissance-*.jar | |
| retention-days: ${{ env.ARTIFACT_RETENTION_DAYS }} | |
| readme: | |
| needs: [setup, build] | |
| runs-on: ubuntu-latest | |
| container: ${{ format('{0}:{1}-openjdk25', needs.setup.outputs.BUILDENV_IMAGE_BASE, needs.setup.outputs.BUILDENV_IMAGE_VERSION) }} | |
| # We rarely build for more than 3 minutes | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Git checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Fix Git safe directory | |
| shell: bash | |
| run: git config --global --add safe.directory $GITHUB_WORKSPACE | |
| - name: Fetch pre-built main JAR | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: main-jar | |
| path: target | |
| - name: Check generated files are up-to-date | |
| shell: bash | |
| run: tools/ci/check-markdown.sh | |
| run: | |
| needs: [setup, build] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: linux | |
| image: temurin-jdk11 | |
| - os: linux | |
| image: temurin-jdk17 | |
| - os: linux | |
| image: temurin-jdk21 | |
| - os: linux | |
| image: temurin-jdk25 | |
| - os: linux | |
| image: openjdk26 | |
| - os: linux | |
| image: openj9-openjdk11 | |
| - os: linux | |
| image: openj9-openjdk17 | |
| - os: linux | |
| image: openj9-openjdk21 | |
| - os: windows | |
| java: 11 | |
| - os: windows | |
| java: 17 | |
| - os: windows | |
| java: 21 | |
| - os: windows | |
| java: 25 | |
| - os: macos | |
| java: 11 | |
| - os: macos | |
| java: 17 | |
| - os: macos | |
| java: 21 | |
| - os: macos | |
| java: 25 | |
| # The following two settings are a bit of a hack: | |
| # - We use only short OS name in the matrix to have short build names. | |
| # - We need to set container to null on Windows and Mac as containers | |
| # are only supported on Linux. | |
| # - Workaround: avoid newer images (with Fedora 42) for JDK 11. | |
| runs-on: ${{ (matrix.os == 'linux') && 'ubuntu' || matrix.os }}-latest | |
| container: >- | |
| ${{ | |
| (matrix.os == 'linux') && format( | |
| '{0}:{1}-{2}', needs.setup.outputs.BUILDENV_IMAGE_BASE, | |
| (matrix.image == 'openjdk11' && 'v15') || needs.setup.outputs.BUILDENV_IMAGE_VERSION, | |
| matrix.image | |
| ) || null | |
| }} | |
| # We rarely run over 17 minutes but a runaway JMH can loop forever. | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Git checkout | |
| uses: actions/checkout@v6 | |
| 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@v5 | |
| with: | |
| distribution: temurin | |
| java-version: ${{ matrix.java }} | |
| if: ${{ matrix.os != 'linux' }} | |
| - name: Environment configuration | |
| shell: bash | |
| run: tools/ci/pre-show-env.sh | |
| - name: Fetch pre-built main JAR | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: main-jar | |
| path: target | |
| - name: Fetch pre-built JMH JAR | |
| uses: actions/download-artifact@v8 | |
| 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: | |
| needs: [setup, build] | |
| runs-on: ubuntu-latest | |
| container: ${{ format('{0}:{1}-openjdk11-with-ant-gcc', needs.setup.outputs.BUILDENV_IMAGE_BASE, 'v15') }} | |
| # We rarely run over 10 minutes anyway. | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Git checkout | |
| uses: actions/checkout@v6 | |
| 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@v5 | |
| with: | |
| key: coursier_cache-${{ runner.os }}-${{ hashFiles('build.sbt') }} | |
| path: ${{ env.COURSIER_CACHE }} | |
| - name: Fetch pre-built main JAR | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: main-jar | |
| path: target | |
| - 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 |