Nightly Spartan Benchmarks #31
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: Nightly Spartan Benchmarks | |
| on: | |
| schedule: | |
| - cron: "0 4 * * *" | |
| workflow_dispatch: | |
| inputs: | |
| nightly_tag: | |
| description: "Nightly tag to use (e.g., 2.3.4-nightly.20251209). Leave empty to auto-detect." | |
| required: false | |
| type: string | |
| concurrency: | |
| group: nightly-spartan-bench-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| benchmark: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
| # Note cron jobs will be on 'next' by default. | |
| - name: Determine nightly tag | |
| id: nightly-tag | |
| run: | | |
| if [[ -n "${{ inputs.nightly_tag }}" ]]; then | |
| nightly_tag="${{ inputs.nightly_tag }}" | |
| else | |
| current_version=$(jq -r '."."' .release-please-manifest.json) | |
| nightly_tag="${current_version}-nightly.$(date -u +%Y%m%d)" | |
| fi | |
| echo "nightly_tag=$nightly_tag" >> $GITHUB_OUTPUT | |
| echo "Using nightly tag: $nightly_tag" | |
| - name: Check if Docker image exists | |
| run: | | |
| DOCKER_IMAGE="aztecprotocol/aztec:${{ steps.nightly-tag.outputs.nightly_tag }}" | |
| echo "Checking if Docker image exists: $DOCKER_IMAGE" | |
| if docker manifest inspect "$DOCKER_IMAGE" > /dev/null 2>&1; then | |
| echo "Docker image exists: $DOCKER_IMAGE" | |
| else | |
| echo "Docker image does not exist: $DOCKER_IMAGE" | |
| exit 1 | |
| fi | |
| - name: Run benchmarks | |
| env: | |
| AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
| AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
| GITHUB_TOKEN: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }} | |
| BUILD_INSTANCE_SSH_KEY: ${{ secrets.BUILD_INSTANCE_SSH_KEY }} | |
| GCP_SA_KEY: ${{ secrets.GCP_SA_KEY }} | |
| GCP_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }} | |
| SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} | |
| RUN_ID: ${{ github.run_id }} | |
| AWS_SHUTDOWN_TIME: 360 | |
| NO_SPOT: 1 | |
| run: | | |
| # Pass the arguments expected in ./bootstrap.sh ci-network-bench | |
| ./.github/ci3.sh network-bench tps-scenario nightly-bench "aztecprotocol/aztec:${{ steps.nightly-tag.outputs.nightly_tag }}" | |
| - name: Cleanup network resources | |
| if: always() | |
| env: | |
| AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
| AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
| GITHUB_TOKEN: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }} | |
| BUILD_INSTANCE_SSH_KEY: ${{ secrets.BUILD_INSTANCE_SSH_KEY }} | |
| GCP_SA_KEY: ${{ secrets.GCP_SA_KEY }} | |
| GCP_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }} | |
| NO_SPOT: 1 | |
| run: ./.github/ci3.sh network-teardown tps-scenario nightly-bench | |
| - name: Download benchmarks | |
| if: always() | |
| env: | |
| AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
| AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
| run: | | |
| if ./ci.sh gh-spartan-bench; then | |
| echo "ENABLE_DEPLOY_BENCH=1" >> $GITHUB_ENV | |
| fi | |
| - name: Upload benchmarks | |
| if: always() && env.ENABLE_DEPLOY_BENCH == '1' | |
| uses: benchmark-action/github-action-benchmark@4de1bed97a47495fc4c5404952da0499e31f5c29 | |
| with: | |
| name: Spartan | |
| benchmark-data-dir-path: "bench/next" | |
| tool: "customSmallerIsBetter" | |
| output-file-path: ./bench-out/bench.json | |
| github-token: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }} | |
| auto-push: true | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| alert-threshold: "120%" | |
| comment-on-alert: false | |
| fail-on-alert: false | |
| max-items-in-chart: 100 | |
| - name: Notify Slack on failure | |
| if: failure() && github.event_name != 'workflow_dispatch' | |
| env: | |
| SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} | |
| run: | | |
| if [ -n "${SLACK_BOT_TOKEN}" ]; then | |
| read -r -d '' data <<EOF || true | |
| { | |
| "channel": "#alerts-next-scenario", | |
| "text": "Nightly Spartan Benchmarks FAILED (nightly tag ${{ steps.nightly-tag.outputs.nightly_tag }}): <https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}|View Run>" | |
| } | |
| EOF | |
| curl -X POST https://slack.com/api/chat.postMessage \ | |
| -H "Authorization: Bearer $SLACK_BOT_TOKEN" \ | |
| -H "Content-type: application/json" \ | |
| --data "$data" | |
| fi |