From ae612cf6b50de9a5442f4f3ae638f4f539098dcc Mon Sep 17 00:00:00 2001 From: Seth Falco Date: Wed, 25 Oct 2023 01:57:22 +0100 Subject: [PATCH] build(fpb-lint): linting errors as PR comments (#10618) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: ImVector <59611597+LuigiImVector@users.noreply.github.com> Co-authored-by: David Ordás <3125580+davorpa@users.noreply.github.com> --- .github/workflows/comment-pr.yml | 55 ++++++++++++++++++++++++++++++++ .github/workflows/fpb-lint.yml | 23 ++++++++++--- 2 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/comment-pr.yml diff --git a/.github/workflows/comment-pr.yml b/.github/workflows/comment-pr.yml new file mode 100644 index 000000000..913ceda24 --- /dev/null +++ b/.github/workflows/comment-pr.yml @@ -0,0 +1,55 @@ +name: Comment on the pull request + +on: + workflow_run: + workflows: ["free-programming-books-lint"] + types: + - completed + +jobs: + upload: + permissions: + pull-requests: write + runs-on: ubuntu-latest + if: > + ${{ github.event.workflow_run.event == 'pull_request' && + github.event.workflow_run.conclusion == 'success' }} + steps: + - name: 'Download artifact' + uses: actions/github-script@v6 + with: + script: | + let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: context.payload.workflow_run.id, + }); + let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => { + return artifact.name == "pr" + })[0]; + let download = await github.rest.actions.downloadArtifact({ + owner: context.repo.owner, + repo: context.repo.repo, + artifact_id: matchArtifact.id, + archive_format: 'zip', + }); + let fs = require('fs'); + fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/pr.zip`, Buffer.from(download.data)); + + - name: 'Unzip artifact' + run: unzip pr.zip + + - name: 'Comment on PR' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + if [ -s error.log ] + then + gh pr comment $( output.log + + - name: Clean output and create artifacts + if: always() + run: | + mkdir -p ./pr + echo ${{ github.event.pull_request.html_url }} > ./pr/PRurl + cat output.log | sed -E 's:/home/runner/work/free-programming-books/|⚠.+::' | uniq > ./pr/error.log + + - uses: actions/upload-artifact@v3 + if: always() + with: + name: pr + path: pr/