mirror of https://github.com/probonopd/MiniDexed
parent
75e82caf72
commit
24a309ebb4
@ -1,64 +1,26 @@ |
|||||||
# https://nightly.link/ |
# https://github.com/subsurface/subsurface/blob/master/.github/workflows/artifact-links.yml |
||||||
# https://github.com/oprypin/nightly.link/blob/master/.github/workflows/pr-comment.yml |
|
||||||
|
name: Add artifact links to pull request |
||||||
|
|
||||||
name: Comment on pull request |
|
||||||
on: |
on: |
||||||
workflow_run: |
workflow_run: |
||||||
workflows: ['Build'] |
workflows: ["Build"] |
||||||
types: [completed] |
types: [completed] |
||||||
|
|
||||||
jobs: |
jobs: |
||||||
pr_comment: |
artifacts-url-comments: |
||||||
if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' |
name: Add artifact links to PR and issues |
||||||
runs-on: ubuntu-latest |
runs-on: ubuntu-22.04 |
||||||
|
|
||||||
steps: |
steps: |
||||||
- uses: actions/github-script@v6 |
- name: Add artifact links to PR and issues |
||||||
|
if: github.event.workflow_run.event == 'pull_request' |
||||||
|
uses: tonyhallett/artifacts-url-comments@v1.1.0 |
||||||
|
env: |
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
||||||
with: |
with: |
||||||
# This snippet is public-domain, taken from |
prefix: "Build for testing:" |
||||||
# https://github.com/oprypin/nightly.link/blob/master/.github/workflows/pr-comment.yml |
suffix: "Use at your own risk._" |
||||||
script: | |
format: name |
||||||
async function upsertComment(owner, repo, issue_number, purpose, body) { |
addTo: pull |
||||||
const {data: comments} = await github.rest.issues.listComments( |
errorNoArtifacts: false |
||||||
{owner, repo, issue_number}); |
|
||||||
|
|
||||||
const marker = `<!-- bot: ${purpose} -->`; |
|
||||||
body = marker + "\n" + body; |
|
||||||
|
|
||||||
const existing = comments.filter((c) => c.body.includes(marker)); |
|
||||||
if (existing.length > 0) { |
|
||||||
const last = existing[existing.length - 1]; |
|
||||||
core.info(`Updating comment ${last.id}`); |
|
||||||
await github.rest.issues.updateComment({ |
|
||||||
owner, repo, |
|
||||||
body, |
|
||||||
comment_id: last.id, |
|
||||||
}); |
|
||||||
} else { |
|
||||||
core.info(`Creating a comment in issue / PR #${issue_number}`); |
|
||||||
await github.rest.issues.createComment({issue_number, body, owner, repo}); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
const {owner, repo} = context.repo; |
|
||||||
const run_id = ${{github.event.workflow_run.id}}; |
|
||||||
|
|
||||||
const pull_requests = ${{ toJSON(github.event.workflow_run.pull_requests) }}; |
|
||||||
if (!pull_requests.length) { |
|
||||||
return core.error("This workflow doesn't match any pull requests!"); |
|
||||||
} |
|
||||||
|
|
||||||
const artifacts = await github.paginate( |
|
||||||
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`; |
|
||||||
for (const art of artifacts) { |
|
||||||
body += `\n* [${art.name}.zip](https://nightly.link/${owner}/${repo}/actions/artifacts/${art.id}.zip)`; |
|
||||||
} |
|
||||||
|
|
||||||
core.info("Review thread message body:", body); |
|
||||||
|
|
||||||
for (const pr of pull_requests) { |
|
||||||
await upsertComment(owner, repo, pr.number, |
|
||||||
"nightly-link", body); |
|
||||||
} |
|
||||||
|
Loading…
Reference in new issue