code-format-msg #843
This file contains hidden or 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: code-format-msg | |
on: | |
workflow_run: | |
workflows: [code-format] | |
types: [completed] | |
concurrency: | |
group: code-format-msg-${{ github.head_ref || github.run_id }} | |
permissions: | |
contents: read | |
pull-requests: write | |
jobs: | |
pr-context: | |
name: acquire-pr-context | |
runs-on: ubuntu-latest | |
outputs: | |
PR_HEADSHA: ${{ steps.set-pr-context.outputs.head-sha }} | |
PR_NUMBER: ${{ steps.set-pr-context.outputs.number }} | |
if: ${{ github.event.workflow_run.event == 'pull_request' }} | |
steps: | |
- name: get-pr-context | |
id: set-pr-context | |
env: | |
GH_TOKEN: ${{ github.token }} | |
PR_TARGET_REPO: ${{ github.repository }} | |
PR_BRANCH: |- | |
${{ | |
(github.event.workflow_run.head_repository.owner.login != github.event.workflow_run.repository.owner.login) | |
&& format('{0}:{1}', github.event.workflow_run.head_repository.owner.login, github.event.workflow_run.head_branch) | |
|| github.event.workflow_run.head_branch | |
}} | |
run: | | |
gh pr view --repo "${PR_TARGET_REPO}" "${PR_BRANCH}" \ | |
--json 'number,headRefOid' \ | |
--jq '"number=\(.number)\nhead-sha=\(.headRefOid)"' \ | |
>> $GITHUB_OUTPUT | |
remove-comment-if-success: | |
if: ${{ github.event.workflow_run.conclusion == 'success' }} | |
runs-on: ubuntu-latest | |
needs: [pr-context] | |
env: | |
PR_HEADSHA: ${{ needs.pr-context.outputs.PR_HEADSHA }} | |
PR_NUMBER: ${{ needs.pr-context.outputs.PR_NUMBER }} | |
steps: | |
- name: Remove existing "format check failed" comment | |
uses: actions/github-script@v7 | |
with: | |
script: | | |
const owner = context.repo.owner; | |
const repo = context.repo.repo; | |
const { data: comments } = await github.rest.issues.listComments({ | |
owner, | |
repo, | |
issue_number: ${{ env.PR_NUMBER }}, | |
}); | |
const targetComment = comments.find(comment => | |
comment.body.includes("Please enable github action in **YOUR FORKED REPO** to make code-format workflow work") | |
); | |
if (targetComment) { | |
await github.rest.issues.deleteComment({ | |
owner, | |
repo, | |
comment_id: targetComment.id, | |
}); | |
console.log("Removed existing code-format failure comment."); | |
} else { | |
console.log("No existing format failure comment to remove."); | |
} | |
post-comment-if-failure: | |
if: ${{ github.event.workflow_run.conclusion == 'failure' }} | |
runs-on: ubuntu-latest | |
needs: [pr-context] | |
env: | |
PR_HEADSHA: ${{ needs.pr-context.outputs.PR_HEADSHA }} | |
PR_NUMBER: ${{ needs.pr-context.outputs.PR_NUMBER }} | |
steps: | |
- name: Post comment on failed code-format if not existing | |
uses: actions/github-script@v7 | |
with: | |
script: | | |
const owner = context.repo.owner; | |
const repo = context.repo.repo; | |
const { data: comments } = await github.rest.issues.listComments({ | |
owner, | |
repo, | |
issue_number: ${{ env.PR_NUMBER }}, | |
}); | |
const existingComment = comments.find(comment => | |
comment.body.includes("Please enable github action in **YOUR FORKED REPO** to make code-format workflow work") | |
); | |
if (existingComment) { | |
console.log("A code-format failure comment already exists."); | |
} else { | |
await github.rest.issues.createComment({ | |
owner, | |
repo, | |
issue_number: ${{ env.PR_NUMBER }}, | |
body: "Please enable github action in **YOUR FORKED REPO** to make code-format workflow work", | |
}); | |
console.log("Created code-format failure comment."); | |
} |