Code size comment #393
This file contains 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: Code size comment | |
on: | |
workflow_run: | |
workflows: [Check code size] | |
types: [completed] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
comment: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: 'Download artifact' | |
id: download-artifact | |
uses: actions/github-script@v7 | |
with: | |
result-encoding: string | |
script: | | |
const fs = require('fs'); | |
const allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
run_id: context.payload.workflow_run.id, | |
}); | |
const matchArtifact = allArtifacts.data.artifacts.filter((artifact) => { | |
return artifact.name == "code-size-report" | |
}); | |
if (matchArtifact.length === 0) { | |
console.log('no matching artifact found'); | |
console.log('result: "skip"'); | |
return 'skip'; | |
} | |
const download = await github.rest.actions.downloadArtifact({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
artifact_id: matchArtifact[0].id, | |
archive_format: 'zip', | |
}); | |
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/code-size-report.zip`, Buffer.from(download.data)); | |
console.log('artifact downloaded to `code-size-report.zip`'); | |
console.log('result: "ok"'); | |
return 'ok'; | |
- name: 'Unzip artifact' | |
if: steps.download-artifact.outputs.result == 'ok' | |
run: unzip code-size-report.zip | |
- name: Post comment to pull request | |
if: steps.download-artifact.outputs.result == 'ok' | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
const fs = require('fs'); | |
const prNumber = Number(fs.readFileSync('pr_number')); | |
const codeSizeReport = `Code size report: | |
\`\`\` | |
${fs.readFileSync('diff')} | |
\`\`\` | |
`; | |
const comments = await github.paginate( | |
github.rest.issues.listComments, | |
{ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: prNumber, | |
} | |
); | |
comments.reverse(); | |
const previousComment = comments.find(comment => | |
comment.user.login === 'github-actions[bot]' | |
) | |
// if github-actions[bot] already made a comment, update it, | |
// otherwise create a new comment. | |
if (previousComment) { | |
await github.rest.issues.updateComment({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
comment_id: previousComment.id, | |
body: codeSizeReport, | |
}); | |
} else { | |
await github.rest.issues.createComment({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: prNumber, | |
body: codeSizeReport, | |
}); | |
} |