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
|
name: free-programming-books-lint
|
||||||
|
|
||||||
on: [push, pull_request]
|
on: [pull_request]
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
@ -17,7 +17,20 @@ jobs:
|
||||||
with:
|
with:
|
||||||
node-version: '16.x'
|
node-version: '16.x'
|
||||||
- run: npm install -g free-programming-books-lint
|
- run: npm install -g free-programming-books-lint
|
||||||
- run: fpb-lint ./books/
|
|
||||||
- run: fpb-lint ./casts/
|
- name: Pull Request
|
||||||
- run: fpb-lint ./courses/
|
run: |
|
||||||
- run: fpb-lint ./more/
|
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