name: Subsystem Benchmarks on: push: branches: - master pull_request: types: [opened, synchronize, reopened, ready_for_review] merge_group: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true permissions: contents: read jobs: preflight: uses: ./.github/workflows/reusable-preflight.yml build: timeout-minutes: 80 needs: [preflight] runs-on: ${{ needs.preflight.outputs.RUNNER }} container: image: ${{ needs.preflight.outputs.IMAGE }} strategy: fail-fast: false matrix: features: [ { name: "polkadot-availability-recovery", bench: "availability-recovery-regression-bench", }, { name: "polkadot-availability-distribution", bench: "availability-distribution-regression-bench", }, { name: "polkadot-node-core-approval-voting", bench: "approval-voting-regression-bench", }, { name: "polkadot-statement-distribution", bench: "statement-distribution-regression-bench", }, ] steps: - name: Checkout uses: actions/checkout@v4 - name: Check Rust run: | rustup show rustup +nightly show - name: Run Benchmarks id: run-benchmarks run: | forklift cargo bench -p ${{ matrix.features.name }} --bench ${{ matrix.features.bench }} --features subsystem-benchmarks || echo "Benchmarks failed" ls -lsa ./charts - name: Upload artifacts uses: actions/upload-artifact@v4.3.6 with: name: ${{matrix.features.bench}} path: ./charts publish-benchmarks: timeout-minutes: 60 needs: [build] if: github.ref == 'refs/heads/master' environment: subsystem-benchmarks runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: ref: gh-pages fetch-depth: 0 - run: git checkout master -- - name: Download artifacts uses: actions/download-artifact@v4.1.8 with: path: ./charts - name: Setup git run: | # Fixes "detected dubious ownership" error in the ci git config --global --add safe.directory '*' ls -lsR ./charts - uses: actions/create-github-app-token@v1 id: app-token with: app-id: ${{ secrets.POLKADOTSDK_GHPAGES_APP_ID }} private-key: ${{ secrets.POLKADOTSDK_GHPAGES_APP_KEY }} - name: Generate ${{ env.BENCH }} env: BENCH: availability-recovery-regression-bench uses: benchmark-action/github-action-benchmark@v1 with: tool: "customSmallerIsBetter" name: ${{ env.BENCH }} output-file-path: ./charts/${{ env.BENCH }}/${{ env.BENCH }}.json benchmark-data-dir-path: ./bench/${{ env.BENCH }} github-token: ${{ steps.app-token.outputs.token }} auto-push: true - name: Generate ${{ env.BENCH }} env: BENCH: availability-distribution-regression-bench uses: benchmark-action/github-action-benchmark@v1 with: tool: "customSmallerIsBetter" name: ${{ env.BENCH }} output-file-path: ./charts/${{ env.BENCH }}/${{ env.BENCH }}.json benchmark-data-dir-path: ./bench/${{ env.BENCH }} github-token: ${{ steps.app-token.outputs.token }} auto-push: true - name: Generate ${{ env.BENCH }} env: BENCH: approval-voting-regression-bench uses: benchmark-action/github-action-benchmark@v1 with: tool: "customSmallerIsBetter" name: ${{ env.BENCH }} output-file-path: ./charts/${{ env.BENCH }}/${{ env.BENCH }}.json benchmark-data-dir-path: ./bench/${{ env.BENCH }} github-token: ${{ steps.app-token.outputs.token }} auto-push: true - name: Generate ${{ env.BENCH }} env: BENCH: statement-distribution-regression-bench uses: benchmark-action/github-action-benchmark@v1 with: tool: "customSmallerIsBetter" name: ${{ env.BENCH }} output-file-path: ./charts/${{ env.BENCH }}/${{ env.BENCH }}.json benchmark-data-dir-path: ./bench/${{ env.BENCH }} github-token: ${{ steps.app-token.outputs.token }} auto-push: true