From 6660fe091f2defef2de0eb26fbace74f632eb095 Mon Sep 17 00:00:00 2001 From: Miku <26039249+xMikux@users.noreply.github.com> Date: Thu, 24 Nov 2022 03:28:58 +0800 Subject: [PATCH] =?UTF-8?q?ci:=20=E5=AE=8C=E6=88=90=E5=90=88=E4=BD=B5?= =?UTF-8?q?=E8=AB=8B=E6=B1=82=E8=87=AA=E5=8B=95=E8=A8=8A=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/Auto-Packer.yml | 86 +++++++++++++++---------------- .github/workflows/PR_Comment.yml | 54 +++++++++++++++++++ 2 files changed, 97 insertions(+), 43 deletions(-) create mode 100644 .github/workflows/PR_Comment.yml diff --git a/.github/workflows/Auto-Packer.yml b/.github/workflows/Auto-Packer.yml index 0df04e872..7df9163e9 100644 --- a/.github/workflows/Auto-Packer.yml +++ b/.github/workflows/Auto-Packer.yml @@ -142,47 +142,47 @@ jobs: ${{ steps.checksum.outputs.sum-02 }} ``` - PR-Comment: - name: PR Comment - runs-on: ubuntu-latest - needs: [ Packer ] - if: | - github.event_name == 'pull_request' - - steps: - - name: Find Comment - uses: peter-evans/find-comment@v2 - id: fc - with: - issue-number: ${{ github.event.pull_request.number }} - comment-author: 'github-actions[bot]' - body-includes: 感謝貢獻!❤️ - - - name: Get Current Artifacts - id: Artifacts - run: | - Artifact_1_Name=$(curl -H "Accept: application/vnd.github+json" https://api.github.com/repos/xMikux/ModsTranslationPack/actions/runs/${{ github.run_id }}/artifacts | jq -r '.artifacts[1] | .name') - Artifact_1_ID=$(curl -H "Accept: application/vnd.github+json" https://api.github.com/repos/xMikux/ModsTranslationPack/actions/runs/${{ github.run_id }}/artifacts | jq -r '.artifacts[1] | .id') - Artifact_2_Name=$(curl -H "Accept: application/vnd.github+json" https://api.github.com/repos/xMikux/ModsTranslationPack/actions/runs/${{ github.run_id }}/artifacts | jq -r '.artifacts[2] | .name') - Artifact_2_ID=$(curl -H "Accept: application/vnd.github+json" https://api.github.com/repos/xMikux/ModsTranslationPack/actions/runs/${{ github.run_id }}/artifacts | jq -r '.artifacts[2] | .id') - echo "Artifact_1_Name=$Artifact_1_Name" >> $GITHUB_OUTPUT - echo "$Artifact_1_Name" - echo "Artifact_1_ID=$Artifact_1_ID" >> $GITHUB_OUTPUT - echo "$Artifact_1_ID" - echo "Artifact_2_Name=$Artifact_2_Name" >> $GITHUB_OUTPUT - echo "$Artifact_2_Name" - echo "Artifact_2_ID=$Artifact_2_ID" >> $GITHUB_OUTPUT - echo "$Artifact_2_ID" - - - name: Create or update comment - uses: peter-evans/create-or-update-comment@v2 - with: - comment-id: ${{ steps.fc.outputs.comment-id }} - issue-number: ${{ github.event.pull_request.number }} - body: | - 感謝貢獻!❤️ + # PR-Comment: + # name: PR Comment + # runs-on: ubuntu-latest + # needs: [ Packer ] + # if: | + # github.event_name == 'pull_request' + + # steps: + # - name: Find Comment + # uses: peter-evans/find-comment@v2 + # id: fc + # with: + # issue-number: ${{ github.event.pull_request.number }} + # comment-author: 'github-actions[bot]' + # body-includes: 感謝貢獻!❤️ + + # - name: Get Current Artifacts + # id: Artifacts + # run: | + # Artifact_0_Name=$(curl -H "Accept: application/vnd.github+json" https://api.github.com/repos/xMikux/ModsTranslationPack/actions/runs/${{ github.run_id }}/artifacts | jq -r '.artifacts[0] | .name') + # Artifact_0_ID=$(curl -H "Accept: application/vnd.github+json" https://api.github.com/repos/xMikux/ModsTranslationPack/actions/runs/${{ github.run_id }}/artifacts | jq -r '.artifacts[0] | .id') + # Artifact_1_Name=$(curl -H "Accept: application/vnd.github+json" https://api.github.com/repos/xMikux/ModsTranslationPack/actions/runs/${{ github.run_id }}/artifacts | jq -r '.artifacts[1] | .name') + # Artifact_1_ID=$(curl -H "Accept: application/vnd.github+json" https://api.github.com/repos/xMikux/ModsTranslationPack/actions/runs/${{ github.run_id }}/artifacts | jq -r '.artifacts[1] | .id') + # echo "Artifact_0_Name=$Artifact_0_Name" >> $GITHUB_OUTPUT + # echo "$Artifact_0_Name" + # echo "Artifact_0_ID=$Artifact_0_ID" >> $GITHUB_OUTPUT + # echo "$Artifact_0_ID" + # echo "Artifact_1_Name=$Artifact_1_Name" >> $GITHUB_OUTPUT + # echo "$Artifact_1_Name" + # echo "Artifact_1_ID=$Artifact_1_ID" >> $GITHUB_OUTPUT + # echo "$Artifact_1_ID" + + # - name: Create or update comment + # uses: peter-evans/create-or-update-comment@v2 + # with: + # comment-id: ${{ steps.fc.outputs.comment-id }} + # issue-number: ${{ github.event.pull_request.number }} + # body: | + # 感謝貢獻!❤️ - 下載合併請求測試用翻譯包: - - [${{ steps.Artifacts.outputs.Artifact_1_Name }}](https://nightly.link/xMikux/TestingModTranslate/actions/artifacts/${{ steps.Artifacts.outputs.Artifact_1_ID }}.zip) - - [${{ steps.Artifacts.outputs.Artifact_2_Name }}](https://nightly.link/xMikux/TestingModTranslate/actions/artifacts/${{ steps.Artifacts.outputs.Artifact_2_ID }}.zip) - edit-mode: replace \ No newline at end of file + # 下載合併請求測試用翻譯包: + # - [${{ steps.Artifacts.outputs.Artifact_1_Name }}](https://nightly.link/xMikux/TestingModTranslate/actions/artifacts/${{ steps.Artifacts.outputs.Artifact_1_ID }}.zip) + # - [${{ steps.Artifacts.outputs.Artifact_2_Name }}](https://nightly.link/xMikux/TestingModTranslate/actions/artifacts/${{ steps.Artifacts.outputs.Artifact_2_ID }}.zip) + # edit-mode: replace \ No newline at end of file diff --git a/.github/workflows/PR_Comment.yml b/.github/workflows/PR_Comment.yml new file mode 100644 index 000000000..8c75814a9 --- /dev/null +++ b/.github/workflows/PR_Comment.yml @@ -0,0 +1,54 @@ +name: Comment on pull request +on: + workflow_run: + workflows: [ 'Auto Package' ] + 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: + # This snippet is public-domain, taken from + # https://github.com/oprypin/nightly.link/blob/master/.github/workflows/pr-comment.yml + script: | + async function upsertComment(owner, repo, issue_number, purpose, body) { + const {data: comments} = await github.rest.issues.listComments( + {owner, repo, issue_number}); + const marker = ``; + 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 = `感謝貢獻!❤️\n\n下載此合併請求測試用翻譯包:\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); + }