Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: bot PRs and dismissed reviews #55

Merged
merged 2 commits into from
Jul 24, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 24 additions & 8 deletions .github/workflows/project_board_automation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,12 @@ jobs:
}' -f pr_url=$PR_URL > data.json
echo 'LINKED_ISSUE_STATE='$(jq '.data.resource.closingIssuesReferences.nodes[] | .state' data.json) >> $GITHUB_ENV
echo 'LINKED_ISSUE_ID='$(jq '.data.resource.closingIssuesReferences.nodes[] | .id' data.json) >> $GITHUB_ENV

- name: 'Check if PR raised by bot'
id: bot-pr
if: startsWith(github.head_ref, 'renovate/') == true || startsWith(github.head_ref, 'dependabot/') == true
uses: actions/github-script@v6.1.0
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
console.log("Bot created PR!");
echo 'BOT_PR = true' >> $GITHUB_ENV
run: echo 'BOT_PR=true' >> $GITHUB_ENV

- name: 'Check for linked issue'
id: linked
if: |
Expand All @@ -85,6 +82,7 @@ jobs:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
console.log("Exclusion label added, or a bot-PR no linked issue required!");

- name: 'Fail if no linked issue or exclusion label'
id: exclude-linked-error
if: steps.linked.outcome == 'skipped' && steps.exclude-linked.outcome == 'skipped'
Expand All @@ -94,6 +92,7 @@ jobs:
script: |
console.log("No linked issue or exclusion label!");
core.setFailed("Link an issue and rerun, or, add the exclusion label!");

- name: 'Fail if linked issue AND exclusion label'
id: linked-and-nochangelog
if: steps.linked.outcome == 'success' && steps.exclude-linked.outcome == 'success'
Expand All @@ -103,6 +102,7 @@ jobs:
script: |
console.log("Remove exclusion label, linked issue found!");
core.setFailed("Remove exclusion label, linked issue found!");

- name: 'Get project related data'
id: project-data
run: |
Expand Down Expand Up @@ -131,6 +131,7 @@ jobs:
echo 'DONE_COLUMN='$(jq --arg merged ${{ env.DONE_COLUMN_NAME }} '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name==$merged) |.id' data.json) >> $GITHUB_ENV
echo 'ITERATION_FIELD_ID='$(jq --arg iteration_field_name $ITERATION_FIELD_NAME '.data.organization.projectNext.fields.nodes[] | select(.name==$iteration_field_name) | .id' data.json) >> $GITHUB_ENV
echo 'CURRENT_ITERATION='$(jq --arg iteration_field_name $ITERATION_FIELD_NAME '.data.organization.projectNext.fields.nodes[] | select(.name==$iteration_field_name) |.settings | fromjson.configuration.iterations[0] | .id' data.json) >> $GITHUB_ENV

- name: 'Get PR state, review decision and author'
id: pr-status
run: |
Expand Down Expand Up @@ -169,6 +170,7 @@ jobs:
echo 'PR_STATE='$(jq '.data.resource | .state' data.json) >> $GITHUB_ENV
echo 'PR_ID='$(jq '.data.resource | .id' data.json) >> $GITHUB_ENV
echo 'AUTHOR_NAME='$(jq '.data.resource.author | .login' data.json) >> $GITHUB_ENV

- name: 'Get PR author id'
id: pr-author
if: steps.pr-status.outcome == 'success'
Expand All @@ -186,6 +188,7 @@ jobs:
}
}' -f author_name=$AUTHOR_NAME > data.json
echo 'AUTHOR_ID='$(jq '.data.search.edges[] | .node | .id' data.json) >> $GITHUB_ENV

- name: 'Add linked issue to the project'
id: issue-to-project
if: |
Expand All @@ -201,6 +204,7 @@ jobs:
}
}' -f project=$PROJECT_ID -f issue=$LINKED_ISSUE_ID --jq '.data.addProjectNextItem.projectNextItem.id')"
echo 'BOARD_ITEM_ID='$issue_item_id >> $GITHUB_ENV

- name: 'Add exclusion labeled PR to the project'
id: pr-to-project
if: |
Expand All @@ -216,6 +220,7 @@ jobs:
}
}' -f project=$PROJECT_ID -f pr=$PR_ID --jq '.data.addProjectNextItem.projectNextItem.id')"
echo 'BOARD_ITEM_ID='$pr_item_id >> $GITHUB_ENV

- name: 'Reopen if the linked issue closed'
id: reopen-issue
if: steps.issue-to-project.outcome == 'success' && env.LINKED_ISSUE_STATE == '"CLOSED"'
Expand All @@ -229,6 +234,7 @@ jobs:
}
}' -f clientMutationId=$AUTHOR_ID -f issueId=$LINKED_ISSUE_ID
# check the env vars before the update to help debugging

- run: env

#######
Expand All @@ -241,6 +247,7 @@ jobs:
echo 'ITEM_ID='${{ env.BOARD_ITEM_ID }} >> $GITHUB_ENV
echo 'CURRENT_ITERATION='$CURRENT_ITERATION >> $GITHUB_ENV
echo 'CURRENT_STATUS='${{ env.IN_PROGRESS_COLUMN }} >> $GITHUB_ENV

- name: 'Set work item for review required column'
id: review-required
if: |
Expand All @@ -249,26 +256,31 @@ jobs:
run: |
echo 'ITEM_ID='${{ env.BOARD_ITEM_ID }} >> $GITHUB_ENV
echo 'CURRENT_STATUS='${{ env.REVIEW_REQUIRED_COLUMN }} >> $GITHUB_ENV

- name: 'Set work item for in review column'
id: changes-requested
if: |
steps.draft-pr.outcome == 'skipped' && env.REVIEWS_COUNT != 'null' &&
env.REVIEW_DECISION == '"CHANGES_REQUESTED"' || env.LATEST_REVIEW_STATE == '"COMMENTED"'
(steps.draft-pr.outcome == 'skipped' && env.REVIEWS_COUNT != 'null' &&
(env.REVIEW_DECISION == '"CHANGES_REQUESTED"' || env.LATEST_REVIEW_STATE == '"COMMENTED"'
|| env.LATEST_REVIEW_STATE == '"DISMISSED"'))
run: |
echo 'ITEM_ID='${{ env.BOARD_ITEM_ID }} >> $GITHUB_ENV
echo 'CURRENT_STATUS='${{ env.IN_REVIEW_COLUMN }} >> $GITHUB_ENV

- name: 'Set work item for approved column'
id: approved
if: steps.draft-pr.outcome == 'skipped' && env.REVIEW_DECISION == '"APPROVED"'
run: |
echo 'ITEM_ID='${{ env.BOARD_ITEM_ID }} >> $GITHUB_ENV
echo 'CURRENT_STATUS='${{ env.APPROVED_COLUMN }} >> $GITHUB_ENV

- name: 'Set work item for merged column'
id: merged
if: env.PR_STATE == '"MERGED"' || github.event.pull_request.merged == true
run: |
echo 'ITEM_ID='${{ env.BOARD_ITEM_ID }} >> $GITHUB_ENV
echo 'CURRENT_STATUS='${{ env.MERGED_COLUMN }} >> $GITHUB_ENV

- name: 'Close linked issue when PR mergd'
id: close-issue
if: steps.merged.outcome == 'success' && steps.linked.outcome == 'success'
Expand All @@ -281,18 +293,21 @@ jobs:
}
}
}' -f clientMutationId=$AUTHOR_ID -f issueId=$LINKED_ISSUE_ID

- name: 'Set closed PR for done column'
id: closed-pr
if: steps.exclude-linked.outcome == 'success' && github.event.pull_request.closed == true
run: |
echo 'ITEM_ID='${{ env.BOARD_ITEM_ID }} >> $GITHUB_ENV
echo 'CURRENT_STATUS='${{ env.DONE_COLUMN }} >> $GITHUB_ENV

- name: 'Set closed PR issue to in progress column'
id: closed-pr-with-issue
if: steps.linked.outcome == 'success' && github.event.pull_request.merged == true
run: |
echo 'ITEM_ID='${{ env.BOARD_ITEM_ID }} >> $GITHUB_ENV
echo 'CURRENT_STATUS='${{ env.IN_PROGRESS_COLUMN }} >> $GITHUB_ENV

#######
## Take the set item fields, update and move the item on the board
#######
Expand Down Expand Up @@ -333,6 +348,7 @@ jobs:
-f status_value=${{ env.CURRENT_STATUS }} \
-f iteration_field=$ITERATION_FIELD_ID \
-f iteration_value=${{ env.CURRENT_ITERATION }}

verify-changelog-updated:
if: |
startsWith(github.head_ref, 'renovate/') != true && github.event.pull_request.draft != true
Expand Down