From abaf2ac3d2503a183c30f617cdaab818fcac0983 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/dependabot.yaml | 8 +++ .github/workflows/run-bench-test.yaml | 53 +++++++++++++++++++ .../workflows/scheduling-benchmarking.yaml | 38 +++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 .github/workflows/run-bench-test.yaml create mode 100644 .github/workflows/scheduling-benchmarking.yaml 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/run-bench-test.yaml b/.github/workflows/run-bench-test.yaml new file mode 100644 index 0000000000..db087fbe1b --- /dev/null +++ b/.github/workflows/run-bench-test.yaml @@ -0,0 +1,53 @@ +name: "Run Bench Test" + +on: + workflow_call: + inputs: + path: + description: Path to the performance test + required: true + type: string + runName: + description: Name of the run, for the purpose of file naming and github comments + required: true + type: string + githubSha: + description: Sha of the github commit to check out + required: true + type: string +jobs: + run-test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ inputs.githubSha }} + - 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: + 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/workflows/scheduling-benchmarking.yaml b/.github/workflows/scheduling-benchmarking.yaml new file mode 100644 index 0000000000..3492ed7fff --- /dev/null +++ b/.github/workflows/scheduling-benchmarking.yaml @@ -0,0 +1,38 @@ +name: "Scheduling Benchmarking" + +on: + pull_request: + paths: + - "**.go" + branches: + - main + +jobs: + before: + name: Before PR + permissions: + pull-requests: write + strategy: + fail-fast: false + matrix: + path: ["pkg/controllers/provisioning/scheduling"] + uses: ./.github/workflows/run-bench-test.yaml + secrets: inherit + with: + path: ${{ matrix.path }} + runName: before-${{ strategy.job-index }} + githubSha: ${{ github.event.pull_request.base.sha }} + after: + name: After PR + permissions: + pull-requests: write + strategy: + fail-fast: false + matrix: + path: ["pkg/controllers/provisioning/scheduling"] + uses: ./.github/workflows/run-bench-test.yaml + secrets: inherit + with: + path: ${{ matrix.path }} + runName: after-${{ strategy.job-index }} + githubSha: ${{ github.sha }} \ No newline at end of file