mirror of
https://git.naxdy.org/Mirror/Ryujinx.git
synced 2026-05-18 18:11:42 +00:00
fix: Collapse PR comment into PR build workflow
Not sure why this was ever separate, and Forgejo doesn't seem to run 'workflow_run` post-execution workflows.
This commit is contained in:
parent
88421959a6
commit
518dd65484
2 changed files with 54 additions and 58 deletions
|
|
@ -202,3 +202,57 @@ jobs:
|
||||||
name: ryujinx-${{ matrix.configuration }}-${{ steps.version_info.outputs.result }}+${{ steps.version_info.outputs.git_short_hash }}-macos_universal
|
name: ryujinx-${{ matrix.configuration }}-${{ steps.version_info.outputs.result }}+${{ steps.version_info.outputs.git_short_hash }}-macos_universal
|
||||||
path: "publish/*.tar.gz"
|
path: "publish/*.tar.gz"
|
||||||
if: forgejo.event_name == 'pull_request'
|
if: forgejo.event_name == 'pull_request'
|
||||||
|
|
||||||
|
post_comment:
|
||||||
|
name: Post comment linking uploaded artifacts
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs:
|
||||||
|
- build
|
||||||
|
- build_macos
|
||||||
|
steps:
|
||||||
|
- uses: actions/github-script@v6
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const forgejo = getOctokit(process.env.FORGEJO_TOKEN, {
|
||||||
|
baseUrl: 'https://git.ryujinx.app/api/v1'
|
||||||
|
})
|
||||||
|
|
||||||
|
const {owner, repo} = context.repo;
|
||||||
|
const run_id = ${{forgejo.event.workflow_run.id}};
|
||||||
|
const pull_head_sha = '${{forgejo.event.workflow_run.head_sha}}';
|
||||||
|
|
||||||
|
const issue_number = await (async () => {
|
||||||
|
const pulls = await forgejo.rest.pulls.list({owner, repo});
|
||||||
|
for await (const {data} of forgejo.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 forgejo.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) {
|
||||||
|
const url = `https://git.ryujinx.app/api/v1/repos/${owner}/${repo}/actions/artifacts/${art.id}/zip`;
|
||||||
|
body += `\n* [${art.name}](${url})`;
|
||||||
|
}
|
||||||
|
|
||||||
|
const {data: comments} = await forgejo.rest.issues.listComments({repo, owner, issue_number});
|
||||||
|
const existing_comment = comments.find((c) => c.user.login === 'forgejo-actions');
|
||||||
|
if (existing_comment) {
|
||||||
|
core.info(`Updating comment ${existing_comment.id}`);
|
||||||
|
await forgejo.rest.issues.updateComment({repo, owner, comment_id: existing_comment.id, body});
|
||||||
|
} else {
|
||||||
|
core.info(`Creating a comment`);
|
||||||
|
await forgejo.rest.issues.createComment({repo, owner, issue_number, body});
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
||||||
name: Comment PR artifacts links
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_run:
|
|
||||||
workflows: ['Build PR']
|
|
||||||
types: [completed]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
pr_comment:
|
|
||||||
if: forgejo.event.workflow_run.event == 'pull_request' && forgejo.event.workflow_run.conclusion == 'success'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/github-script@v6
|
|
||||||
with:
|
|
||||||
script: |
|
|
||||||
const forgejo = getOctokit(process.env.FORGEJO_TOKEN, {
|
|
||||||
baseUrl: 'https://git.ryujinx.app/api/v1'
|
|
||||||
})
|
|
||||||
|
|
||||||
const {owner, repo} = context.repo;
|
|
||||||
const run_id = ${{forgejo.event.workflow_run.id}};
|
|
||||||
const pull_head_sha = '${{forgejo.event.workflow_run.head_sha}}';
|
|
||||||
|
|
||||||
const issue_number = await (async () => {
|
|
||||||
const pulls = await forgejo.rest.pulls.list({owner, repo});
|
|
||||||
for await (const {data} of forgejo.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 forgejo.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) {
|
|
||||||
const url = `https://git.ryujinx.app/api/v1/repos/${owner}/${repo}/actions/artifacts/${art.id}/zip`;
|
|
||||||
body += `\n* [${art.name}](${url})`;
|
|
||||||
}
|
|
||||||
|
|
||||||
const {data: comments} = await forgejo.rest.issues.listComments({repo, owner, issue_number});
|
|
||||||
const existing_comment = comments.find((c) => c.user.login === 'forgejo-actions');
|
|
||||||
if (existing_comment) {
|
|
||||||
core.info(`Updating comment ${existing_comment.id}`);
|
|
||||||
await forgejo.rest.issues.updateComment({repo, owner, comment_id: existing_comment.id, body});
|
|
||||||
} else {
|
|
||||||
core.info(`Creating a comment`);
|
|
||||||
await forgejo.rest.issues.createComment({repo, owner, issue_number, body});
|
|
||||||
}
|
|
||||||
Loading…
Reference in a new issue