summaryrefslogtreecommitdiff
path: root/.github/workflows/report-api-diff.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/report-api-diff.yml')
-rw-r--r--.github/workflows/report-api-diff.yml85
1 files changed, 85 insertions, 0 deletions
diff --git a/.github/workflows/report-api-diff.yml b/.github/workflows/report-api-diff.yml
new file mode 100644
index 0000000000..55d13100fb
--- /dev/null
+++ b/.github/workflows/report-api-diff.yml
@@ -0,0 +1,85 @@
+name: Report API Diff
+
+on:
+ workflow_run:
+ types: [completed]
+ workflows:
+ - Get api.json from Misskey # get-api-diff.yml
+
+jobs:
+ compare-diff:
+ runs-on: ubuntu-latest
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ permissions:
+ pull-requests: write
+
+# api-artifact
+ 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 == "api-artifact"
+ })[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}/api-artifact.zip`, Buffer.from(download.data));
+ - name: Extract artifact
+ run: unzip api-artifact.zip -d artifacts
+ - name: Load PR Number
+ id: load-pr-num
+ run: echo "pr-number=$(cat artifacts/pr_number)" >> "$GITHUB_OUTPUT"
+
+ - name: Output base
+ run: cat ./artifacts/api-base.json
+ - name: Output head
+ run: cat ./artifacts/api-head.json
+ - name: Arrange json files
+ run: |
+ jq '.' ./artifacts/api-base.json > ./api-base.json
+ jq '.' ./artifacts/api-head.json > ./api-head.json
+ - name: Get diff of 2 files
+ run: diff -u --label=base --label=head ./api-base.json ./api-head.json | cat > api.json.diff
+ - name: Get full diff
+ run: diff --label=base --label=head --new-line-format='+%L' --old-line-format='-%L' --unchanged-line-format=' %L' ./api-base.json ./api-head.json | cat > api-full.json.diff
+ - name: Echo full diff
+ run: cat ./api-full.json.diff
+ - name: Upload full diff to Artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: api-artifact
+ path: |
+ api-full.json.diff
+ api-base.json
+ api-head.json
+ - id: out-diff
+ name: Build diff Comment
+ run: |
+ cat <<- EOF > ./output.md
+ このPRによるapi.jsonの差分
+ <details>
+ <summary>差分はこちら</summary>
+
+ \`\`\`diff
+ $(cat ./api.json.diff)
+ \`\`\`
+ </details>
+
+ [Get diff files from Workflow Page](https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})
+ EOF
+ - uses: thollander/actions-comment-pull-request@v2
+ with:
+ pr_number: ${{ steps.load-pr-num.outputs.pr-number }}
+ comment_tag: show_diff
+ filePath: ./output.md