ant-design/.github/workflows/visual-regression-diff-approver.yml

65 lines
1.9 KiB
YAML
Raw Normal View History

# Check the report passed or developer confirmed the diff
name: 🤖 Visual Regression Diff Approver
# on comment event
on:
issue_comment:
types: [created, edited, deleted]
permissions:
contents: read
jobs:
rebase:
permissions:
pull-requests: read
name: Check Virtual Regression Approval
if: github.event.issue.pull_request != ''
runs-on: ubuntu-latest
steps:
# Check all the comments if contains `VISUAL_DIFF_SUCCESS` or `VISUAL_DIFF_FAILED`
# Check if member of repo comment `Pass Visual Diff`
# Return type: `success` or `failed` or `waiting`
- name: Statistic Visual Diff Approval
id: check_approval
uses: actions/github-script@v7
with:
script: |
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
});
let hasDiffSuccess = false;
let hasDiffFailed = false;
let hasMemberApprove = false;
for (const comment of comments) {
if (comment.body.includes('VISUAL_DIFF_SUCCESS')) {
hasDiffSuccess = true;
}
if (comment.body.includes('VISUAL_DIFF_FAILED')) {
hasDiffFailed = true;
}
if (comment.body.includes('- [x] Visual diff is acceptable')) {
hasMemberApprove = true;
}
}
if (hasDiffSuccess || (hasDiffFailed && hasMemberApprove)) {
return 'success';
} else if (hasDiffFailed) {
return 'failed';
} else {
return 'waiting';
}
# Console need approve message and throw failure if the result is `failed`
- name: Fail if Visual Diff Failed
if: steps.check_approval.outputs.result == 'failed'
run: |
echo "Visual Diff Failed, please check the diff and approve it."
exit 1