From b4f48d448b0d7ee7228d249b4cf55ac1e768df62 Mon Sep 17 00:00:00 2001 From: Mateusz Kubuszok Date: Sun, 5 Nov 2023 10:29:38 +0100 Subject: [PATCH] Extract benchmark job to a separate workflow, to stop marking build as constantly failed --- .github/workflows/benchmark.yml | 65 +++++++++++++++++++ .github/workflows/ci.yml | 55 ---------------- .../workflows/publish-benchmark-results.yml | 3 +- 3 files changed, 67 insertions(+), 56 deletions(-) create mode 100644 .github/workflows/benchmark.yml diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 000000000..ee4284e83 --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -0,0 +1,65 @@ +name: Benchmark + +on: + push: + branches: [ master ] + tags: [ '*' ] + pull_request: + branches: [ master ] + types: [ opened, reopened, labeled, synchronize ] + +jobs: + benchmark: + + runs-on: benchmarks + concurrency: 'benchmark' + if: > + github.event_name == 'push' || + (github.event.action == 'labeled' && github.event.label.name == 'benchmark') || + (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'benchmark')) + environment: 'benchmark' + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + # coursier parallel fetch is faster than cache download+upload on our custom runner machine + # - uses: coursier/cache-action@v6 + + - uses: coursier/setup-action@v1.3.0 + with: + jvm: 'temurin:1.21.0.1' # TODO LB java version from matrix + apps: sbt + + - name: Run Scala 2 benchmarks # TODO: run for Scala 3 too + run: sbt "benchmarks/Jmh/run -rf json -rff $(pwd)/$(git describe --tags --always).json" + + - name: Fetch benchmarks metadata + run: curl https://raw.githubusercontent.com/scalalandio/chimney-benchmark-results/main/meta.json -o meta.json + + - name: Get nope.js + uses: actions/setup-node@v3 + with: + node-version: 18 + + - name: Process current benchmarks results + run: node .github/scripts/process-benchmarks.mjs "$GITHUB_CONTEXT" "$(git describe --tags --always)" + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + + - name: Save benchmark results + run: | + SHA=$(cat sha) + mkdir -p ./results/${{ github.event_name }}/$SHA + mv meta.json ./results + mv sha ./results + mv $(git describe --tags --always).json ./results/${{ github.event_name }}/$SHA + echo "$(git describe --tags --always)" > ./results/version + echo "${{ github.event_name }}" > ./results/event + + - name: Upload benchmark results + uses: actions/upload-artifact@v2 + with: + name: benchmark-results + path: results diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6e54fce82..6f9bbb3ea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,58 +50,3 @@ jobs: - uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} - - benchmark: - needs: build - runs-on: benchmarks - concurrency: 'benchmark' - if: > - github.event_name == 'push' || - (github.event.action == 'labeled' && github.event.label.name == 'benchmark') || - (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'benchmark')) - environment: 'benchmark' - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - # coursier parallel fetch is faster than cache download+upload on our custom runner machine - # - uses: coursier/cache-action@v6 - - - uses: coursier/setup-action@v1.3.0 - with: - jvm: 'temurin:1.21.0.1' # TODO LB java version from matrix - apps: sbt - - - name: Run Scala 2 benchmarks # TODO: run for Scala 3 too - run: sbt "benchmarks/Jmh/run -rf json -rff $(pwd)/$(git describe --tags --always).json" - - - name: Fetch benchmarks metadata - run: curl https://raw.githubusercontent.com/scalalandio/chimney-benchmark-results/main/meta.json -o meta.json - - - name: Get nope.js - uses: actions/setup-node@v3 - with: - node-version: 18 - - - name: Process current benchmarks results - run: node .github/scripts/process-benchmarks.mjs "$GITHUB_CONTEXT" "$(git describe --tags --always)" - env: - GITHUB_CONTEXT: ${{ toJson(github) }} - - - name: Save benchmark results - run: | - SHA=$(cat sha) - mkdir -p ./results/${{ github.event_name }}/$SHA - mv meta.json ./results - mv sha ./results - mv $(git describe --tags --always).json ./results/${{ github.event_name }}/$SHA - echo "$(git describe --tags --always)" > ./results/version - echo "${{ github.event_name }}" > ./results/event - - - name: Upload benchmark results - uses: actions/upload-artifact@v2 - with: - name: benchmark-results - path: results diff --git a/.github/workflows/publish-benchmark-results.yml b/.github/workflows/publish-benchmark-results.yml index b338feb16..3e50474eb 100644 --- a/.github/workflows/publish-benchmark-results.yml +++ b/.github/workflows/publish-benchmark-results.yml @@ -2,11 +2,12 @@ name: Publish benchmark results on: workflow_run: - workflows: [ 'CI build' ] + workflows: [ 'Benchmark' ] types: [ completed ] jobs: push-to-data-repo: + runs-on: ubuntu-latest if: github.event.workflow_run.conclusion == 'success' steps: