This is an automated email from the ASF dual-hosted git repository.
jiajunwang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/helix.git
The following commit(s) were added to refs/heads/master by this push:
new 5afedbd Fix the PR validate script so the auto label can be applied
correctly. (#1605)
5afedbd is described below
commit 5afedbdef68a9b0a31ba9017709dceac3cea7309
Author: Jiajun Wang <[email protected]>
AuthorDate: Tue Jan 12 11:39:09 2021 -0800
Fix the PR validate script so the auto label can be applied correctly.
(#1605)
Use the native github-script to finish the action.
---
.github/workflows/Helix-PR-Premerge-Check.yml | 67 +++++++++++++++++++++++----
1 file changed, 58 insertions(+), 9 deletions(-)
diff --git a/.github/workflows/Helix-PR-Premerge-Check.yml
b/.github/workflows/Helix-PR-Premerge-Check.yml
index e57bf02..3d0ae8f 100644
--- a/.github/workflows/Helix-PR-Premerge-Check.yml
+++ b/.github/workflows/Helix-PR-Premerge-Check.yml
@@ -14,13 +14,62 @@ jobs:
runs-on: ubuntu-latest
steps:
- - name: Verify All Tasks are Finished
- uses: venkatsarvesh/[email protected]
+ - name: Label PR if ready to be merged.
+ uses: actions/github-script@v3
with:
- repo-token: "${{ secrets.GITHUB_TOKEN }}"
- - name: Verify the PR has been approved
- uses: abinoda/[email protected]
- env:
- APPROVALS: "1"
- ADD_LABEL: "CheckedAndApproved"
- GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+ github-token: ${{secrets.GITHUB_TOKEN}}
+ script: |
+ const approvalLabel = 'CheckedAndApproved'
+
+ const reviews = await github.pulls.listReviews({
+ pull_number: context.payload.pull_request.number,
+ owner: context.repo.owner,
+ repo: context.repo.repo
+ })
+
+ // Check if any recent APPROVED or CHANGES_REQUESTED reviews.
+ var approved = false
+ for (const review_info of reviews.data) {
+ if (review_info.author_association == 'NONE' ||
review_info.author_association == 'FIRST_TIMER' ||
review_info.author_association == 'FIRST_TIME_CONTRIBUTOR') {
+ continue
+ }
+ if (review_info.state == 'APPROVED') {
+ approved = true
+ } else if (review_info.state == 'CHANGES_REQUESTED') {
+ approved = false
+ }
+ }
+
+ if (approved) {
+ console.log("This PR has been approved.")
+ github.issues.addLabels({
+ issue_number: context.payload.pull_request.number,
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ labels: [approvalLabel]
+ })
+ } else {
+ console.log("This PR has not been approved.")
+ const labels_info = await github.issues.listLabelsOnIssue({
+ issue_number: context.payload.pull_request.number,
+ owner: context.repo.owner,
+ repo: context.repo.repo
+ })
+
+ var approvalLabelExist = false
+ for (const label of labels_info.data) {
+ if (label.name == approvalLabel) {
+ approvalLabelExist = true
+ break
+ }
+ }
+ if (approvalLabelExist) {
+ github.issues.removeLabel({
+ issue_number: context.payload.pull_request.number,
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ name: approvalLabel
+ })
+ }
+ }
+ if: ${{ (!contains(github.event.pull_request.body, '[ ]') ||
contains(github.event.pull_request.labels.*.name, 'CheckedAndApproved')) &&
(github.event.pull_request.state == 'open') }}