mirror of
https://github.com/django-components/django-components.git
synced 2025-12-23 11:12:57 +00:00
Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 8. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/v7...v8) --- updated-dependencies: - dependency-name: actions/github-script dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
99 lines
3.9 KiB
YAML
99 lines
3.9 KiB
YAML
# Run benchmark report on pull requests to master.
|
|
# The report is added to the PR as a comment.
|
|
#
|
|
# NOTE: When making a PR from a fork, the worker doesn't have sufficient
|
|
# access to make comments on the target repo's PR. And so, this workflow
|
|
# is split to two parts:
|
|
#
|
|
# 1. Benchmarking and saving results as artifacts
|
|
# 2. Downloading the results and commenting on the PR
|
|
#
|
|
# See https://stackoverflow.com/a/71683208/9788634
|
|
|
|
name: PR benchmark comment
|
|
|
|
on:
|
|
workflow_run:
|
|
# NOTE: The name here MUST match the name of the workflow that generates the data
|
|
workflows: [PR benchmarks generate]
|
|
types:
|
|
- completed
|
|
|
|
jobs:
|
|
download:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
pull-requests: write
|
|
repository-projects: write
|
|
steps:
|
|
########## USE FOR DEBUGGING ##########
|
|
- name: Debug workflow run info
|
|
uses: actions/github-script@v8
|
|
with:
|
|
script: |
|
|
console.log('Workflow Run ID:', context.payload.workflow_run.id);
|
|
const artifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
run_id: context.payload.workflow_run.id
|
|
});
|
|
console.log('Available artifacts:');
|
|
console.log(JSON.stringify(artifacts.data, null, 2));
|
|
console.log(`PRs: ` + JSON.stringify(context.payload.workflow_run.pull_requests));
|
|
#########################################
|
|
|
|
# NOTE: The next two steps (download and unzip) are equivalent to using `actions/download-artifact@v4`
|
|
# However, `download-artifact` was not picking up the artifact, while the REST client does.
|
|
- name: Download benchmark results
|
|
uses: actions/github-script@v8
|
|
with:
|
|
script: |
|
|
const fs = require('fs');
|
|
|
|
// Find the artifact that was generated by the "pr-benchmark-generate" workflow
|
|
const allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
// Explicitly search the workflow run that generated the the results
|
|
// (AKA the "pr-benchmark-generate" workflow).
|
|
run_id: context.payload.workflow_run.id,
|
|
});
|
|
const matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
|
|
return artifact.name == "benchmark_results"
|
|
})[0];
|
|
|
|
// Download the artifact
|
|
const download = await github.rest.actions.downloadArtifact({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
artifact_id: matchArtifact.id,
|
|
archive_format: 'zip',
|
|
});
|
|
fs.writeFileSync(
|
|
`${process.env.GITHUB_WORKSPACE}/benchmark_results.zip`,
|
|
Buffer.from(download.data),
|
|
);
|
|
|
|
- name: Unzip artifact
|
|
run: unzip benchmark_results.zip
|
|
|
|
- name: Comment on PR
|
|
# See https://github.com/actions/github-script
|
|
uses: actions/github-script@v8
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
script: |
|
|
const fs = require('fs');
|
|
const results = fs.readFileSync('./benchmark_results.md', 'utf8');
|
|
const issue_number = Number.parseInt(fs.readFileSync('./pr_number.txt', 'utf8'));
|
|
const body = `## Performance Benchmark Results\n\nComparing PR changes against master branch:\n\n${results}`;
|
|
|
|
// See https://octokit.github.io/rest.js/v21/#issues-create-comment
|
|
await github.rest.issues.createComment({
|
|
body: body,
|
|
// See https://github.com/actions/toolkit/blob/662b9d91f584bf29efbc41b86723e0e376010e41/packages/github/src/context.ts#L66
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: issue_number,
|
|
});
|