diff options
author | natural-harmonia-gropius <50797982+natural-harmonia-gropius@users.noreply.github.com> | 2023-09-08 13:26:59 +0800 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2023-09-21 19:47:20 +0000 |
commit | 3e7a8b6213ae3c1d3afccdf4ff744a6a0433be0e (patch) | |
tree | f2ad87859f4297dc8cf5cb01a43af98666819255 /.github | |
parent | 7f6785f36336671b01ba9944cf7101a7c2c487bd (diff) | |
download | mpv-3e7a8b6213ae3c1d3afccdf4ff744a6a0433be0e.tar.bz2 mpv-3e7a8b6213ae3c1d3afccdf4ff744a6a0433be0e.tar.xz |
github/workflows: comment PR artifacts links
Diffstat (limited to '.github')
-rw-r--r-- | .github/workflows/comment.yml | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/.github/workflows/comment.yml b/.github/workflows/comment.yml new file mode 100644 index 0000000000..7f9603a753 --- /dev/null +++ b/.github/workflows/comment.yml @@ -0,0 +1,58 @@ +name: comment + +on: + workflow_run: + workflows: ["build"] + types: [completed] + +jobs: + pr_comment: + if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' + runs-on: ubuntu-latest + steps: + - uses: actions/github-script@v6 + with: + script: | + const { owner, repo } = context.repo; + const run_id = ${{ github.event.workflow_run.id }}; + const pull_head_sha = '${{github.event.workflow_run.head_sha}}'; + + const issue_number = await(async () => { + const pulls = await github.rest.pulls.list({ owner, repo }); + for await (const { data } of github.paginate.iterator(pulls)) { + for (const pull of data) { + if (pull.head.sha === pull_head_sha) { + return pull.number; + } + } + } + })(); + if (issue_number) { + core.info(`Using pull request ${issue_number}`); + } else { + return core.error(`No matching pull request found`); + } + + const { data: { artifacts } } = await github.rest.actions.listWorkflowRunArtifacts({ owner, repo, run_id }); + if (!artifacts.length) { + return core.error(`No artifacts found`); + } + + let body = `Download the artifacts for this pull request:\n\n<details><summary>Windows</summary>\n`; + for (const art of artifacts) { + const art_link = `https://nightly.link/${owner}/${repo}/actions/artifacts/${art.id}.zip`; + if (art.name.includes('w64')) { + body += `\n* [${art.name}](${art_link})`; + } + } + body += `\n</details>`; + + const { data: comments } = await github.rest.issues.listComments({ repo, owner, issue_number }); + const existing_comment = comments.find((c) => c.user.login === 'github-actions[bot]'); + if (existing_comment) { + core.info(`Updating comment ${existing_comment.id}`); + await github.rest.issues.updateComment({ repo, owner, comment_id: existing_comment.id, body }); + } else { + core.info(`Creating a comment`); + await github.rest.issues.createComment({ repo, owner, issue_number, body }); + } |