From a0f2daeea971415b41523205e55c175b97161c29 Mon Sep 17 00:00:00 2001 From: Derek Frank Date: Wed, 26 Feb 2025 09:45:28 -0800 Subject: [PATCH] ci: Automating scheduling benchmarking testing for PRs --- .github/actions/run-bench-test/action.yaml | 45 ++++++++++++++++ .github/dependabot.yaml | 8 +++ .../workflows/scheduling-benchmarking.yaml | 54 +++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 .github/actions/run-bench-test/action.yaml create mode 100644 .github/workflows/scheduling-benchmarking.yaml diff --git a/.github/actions/run-bench-test/action.yaml b/.github/actions/run-bench-test/action.yaml new file mode 100644 index 0000000000..6918cb2daa --- /dev/null +++ b/.github/actions/run-bench-test/action.yaml @@ -0,0 +1,45 @@ +name: RunBenchTest +description: 'Runs a given Benchmark Test' +inputs: + path: + description: Path to the performance test + default: "" + runName: + description: Name of the run, for the purpose of file naming and github comments + default: "" + githubToken: + descriptuon: Github secret token to use for commenting on PR + default: "" +runs: + using: "composite" + steps: + - name: Run Test + id: test-run + shell: bash + run: | + { + cd ${{ inputs.path }} + mkdir output + go test -tags=test_performance -run=1 -bench=. -count=1 -cpuprofile output/cpu.out -memprofile output/mem.out > output/results.txt + echo 'OUTPUT<> "$GITHUB_OUTPUT" + - uses: actions/upload-artifact@v4 + id: artifact-upload + with: + name: ${{ inputs.runName }} + path: ${{ inputs.path }}/output + - uses: actions/github-script@v7 + env: + RESULTS: ${{ steps.test-run.outputs.OUTPUT }} + UPLOAD: ${{ steps.artifact-upload.outputs.artifact-url }} + with: + github-token: ${{ inputs.githubToken }} + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `# :mag: ${{ inputs.runName }} :mag:\nResults of benchmarking testing in \`${{ inputs.path }}\`: \n\`\`\`${process.env.RESULTS}\n\`\`\`\n${process.env.UPLOAD}` + }) \ No newline at end of file diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index d2895bf3b2..fa18fbdd8e 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -61,3 +61,11 @@ updates: action-deps: patterns: - '*' + - package-ecosystem: github-actions + directory: .github/actions/run-bench-test + schedule: + interval: weekly + groups: + action-deps: + patterns: + - '*' diff --git a/.github/workflows/scheduling-benchmarking.yaml b/.github/workflows/scheduling-benchmarking.yaml new file mode 100644 index 0000000000..d87d5cab0e --- /dev/null +++ b/.github/workflows/scheduling-benchmarking.yaml @@ -0,0 +1,54 @@ +name: "Scheduling Benchmarking" + +on: + pull_request: + types: + - opened + - edited + - synchronize + - reopened + paths: + - "**.go" + branches: + - main + +jobs: + before: + name: Before PR + runs-on: ubuntu-latest + permissions: + pull-requests: write + strategy: + fail-fast: false + matrix: + path: ["pkg/controllers/provisioning/scheduling"] + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: ${{ github.event.pull_request.base.sha }} + - uses: ./.github/actions/run-bench-test + with: + path: ${{ matrix.path }} + runName: before-${{ strategy.job-index }} + githubToken: ${{ secrets.GITHUB_TOKEN }} + after: + name: After PR + runs-on: ubuntu-latest + permissions: + pull-requests: write + strategy: + fail-fast: false + matrix: + path: ["pkg/controllers/provisioning/scheduling"] + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: ${{ github.event.pull_request.head.sha }} + - uses: ./.github/actions/run-bench-test + with: + path: ${{ matrix.path }} + runName: after-${{ strategy.job-index }} + githubToken: ${{ secrets.GITHUB_TOKEN }} + \ No newline at end of file