build(fpb-lint): linting errors as PR comments (#10618)
Co-authored-by: ImVector <59611597+LuigiImVector@users.noreply.github.com> Co-authored-by: David Ordás <3125580+davorpa@users.noreply.github.com>pull/10759/head
parent
2fd8f21a78
commit
ae612cf6b5
|
@ -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 $(<PRurl) -b "Linter failed, fix the error(s):
|
||||
\`\`\`
|
||||
$(cat error.log)
|
||||
\`\`\`"
|
||||
gh pr edit $(<PRurl) --add-label "linter error"
|
||||
else
|
||||
gh pr edit $(<PRurl) --remove-label "linter error"
|
||||
fi
|
|
@ -1,6 +1,6 @@
|
|||
name: free-programming-books-lint
|
||||
|
||||
on: [push, pull_request]
|
||||
on: [pull_request]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
@ -17,7 +17,20 @@ jobs:
|
|||
with:
|
||||
node-version: '16.x'
|
||||
- run: npm install -g free-programming-books-lint
|
||||
- run: fpb-lint ./books/
|
||||
- run: fpb-lint ./casts/
|
||||
- run: fpb-lint ./courses/
|
||||
- run: fpb-lint ./more/
|
||||
|
||||
- name: Pull Request
|
||||
run: |
|
||||
fpb-lint books casts courses more &> 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/
|
||||
|
|
Loading…
Reference in New Issue