summaryrefslogtreecommitdiff
path: root/.github/workflows/json4cpp-amalgam-comment.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/json4cpp-amalgam-comment.yml')
-rw-r--r--.github/workflows/json4cpp-amalgam-comment.yml82
1 files changed, 82 insertions, 0 deletions
diff --git a/.github/workflows/json4cpp-amalgam-comment.yml b/.github/workflows/json4cpp-amalgam-comment.yml
new file mode 100644
index 0000000000..18592185d2
--- /dev/null
+++ b/.github/workflows/json4cpp-amalgam-comment.yml
@@ -0,0 +1,82 @@
+name: "json4cpp: Comment Check Amalgamation"
+
+on:
+ workflow_run:
+ workflows: ["json4cpp: Check amalgamation"]
+ types:
+ - completed
+
+permissions:
+ contents: read
+
+jobs:
+ comment:
+ if: ${{ github.event.workflow_run.conclusion == 'failure' }}
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ actions: read
+ issues: read
+ pull-requests: write
+ steps:
+ - name: Harden Runner
+ uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
+ with:
+ egress-policy: audit
+
+ - name: Download artifact
+ uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
+ with:
+ script: |
+ var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ run_id: ${{github.event.workflow_run.id }},
+ });
+ var matchArtifact = artifacts.data.artifacts.filter((artifact) => {
+ return artifact.name == "pr"
+ })[0];
+ var download = await github.rest.actions.downloadArtifact({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ artifact_id: matchArtifact.id,
+ archive_format: 'zip',
+ });
+ var fs = require('fs');
+ fs.writeFileSync('${{github.workspace}}/pr.zip', Buffer.from(download.data));
+ - run: unzip pr.zip
+
+ - name: Comment on PR
+ uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ script: |
+ var fs = require('fs');
+ const author = fs.readFileSync('./author')
+ const issue_number = Number(fs.readFileSync('./number'));
+ const opts = github.rest.issues.listForRepo.endpoint.merge({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ creator: author,
+ state: 'all'
+ })
+ let first = true
+ const issues = await github.paginate(opts)
+ for (const issue of issues) {
+ if (issue.number === issue_number) {
+ continue
+ }
+ if (issue.pull_request) {
+ first = false
+ break
+ }
+ }
+ await github.rest.issues.createComment({
+ issue_number: issue_number,
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ body: '## Amalgamation check failed!\nThe source code has not been amalgamated.'
+ + (first ? ' @' + author + ' Please read and follow the [Contribution Guidelines]'
+ + '(https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md#files-to-change).'
+ : '')
+ })