Handle Validation Result #678
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Handle Validation Result | |
on: | |
workflow_run: | |
workflows: ["Commit Validation"] | |
types: [completed] | |
permissions: | |
actions: read | |
contents: read | |
issues: write | |
pull-requests: write | |
# needed because gh cli fetches unnecessary extra data | |
repository-projects: read | |
jobs: | |
handle-validation-result: | |
runs-on: ubuntu-latest | |
steps: | |
- name: 'Download PR number 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_number.txt" | |
})[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_number.zip`, Buffer.from(download.data)); | |
- name: 'Unzip artifact' | |
run: unzip pr_number.zip | |
- name: Mark unstale if success | |
if: ${{ github.event.workflow_run.conclusion == 'success' }} | |
run: | | |
export PR_NUMBER=$(cat pr_number.txt) | |
echo "In repo $GH_REPO on PR $PR_NUMBER" | |
if gh pr view -R"$GH_REPO" "$PR_NUMBER" --json labels | grep stale ; then | |
echo "No longer stale" | |
gh pr edit -R"$GH_REPO" "$PR_NUMBER" --remove-label stale | |
gh pr comment -R"$GH_REPO" "$PR_NUMBER" --body 'The validity checks are now passing. Thank you.' | |
else | |
echo "Was already not stale" | |
fi | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
GH_REPO: ${{ github.event.repository.full_name }} | |
- name: Make comment and mark stale if failed | |
if: ${{ github.event.workflow_run.conclusion == 'failure' }} | |
run: | | |
export PR_NUMBER=$(cat pr_number.txt) | |
echo "In repo $GH_REPO on PR $PR_NUMBER" | |
echo "Mark as stale" | |
gh pr edit -R"$GH_REPO" "$PR_NUMBER" --add-label stale | |
gh pr comment -R"$GH_REPO" "$PR_NUMBER" --body 'The validity checks failed. Please look at the logs (click the red X) and correct the errors. Your PR will be closed automatically in 2 days if not fixed.' | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
GH_REPO: ${{ github.event.repository.full_name }} |