Move card to the next review column once dev approved #364
Workflow file for this run
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: Move card to the next review column once dev approved | |
on: | |
pull_request_review: | |
types: | |
- submitted | |
jobs: | |
move_card_to_next_review: | |
if: github.event.review.state == 'approved' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Change design label | |
if: contains(github.event.pull_request.labels.*.name, 'upcoming design review') | |
env: | |
GITHUB_TOKEN: ${{ secrets.BOOSTED_MOD_PERSONAL_TOKEN_CLASSIC }} | |
OWNER: ${{ github.repository_owner }} | |
REPO: ${{ github.event.repository.name }} | |
PR_NUMBER: ${{ github.event.pull_request.number }} | |
run: | | |
curl -L -X POST -H "Authorization: Bearer $GITHUB_TOKEN" https://api.github.com/repos/$OWNER/$REPO/issues/$PR_NUMBER/labels -d '{"labels":["ready for design review"]}' | |
gh api --method DELETE "/repos/$OWNER/$REPO/issues/$PR_NUMBER/labels/upcoming design review" | |
- name: Change accessibility label | |
if: contains(github.event.pull_request.labels.*.name, 'upcoming a11y review') | |
env: | |
GITHUB_TOKEN: ${{ secrets.BOOSTED_MOD_PERSONAL_TOKEN_CLASSIC }} | |
OWNER: ${{ github.repository_owner }} | |
REPO: ${{ github.event.repository.name }} | |
PR_NUMBER: ${{ github.event.pull_request.number }} | |
run: | | |
curl -L -X POST -H "Authorization: Bearer $GITHUB_TOKEN" https://api.github.com/repos/$OWNER/$REPO/issues/$PR_NUMBER/labels -d '{"labels":["ready for a11y review"]}' | |
gh api --method DELETE "/repos/$OWNER/$REPO/issues/$PR_NUMBER/labels/upcoming a11y review" | |
- name: Get Project Data | |
env: | |
GITHUB_TOKEN: ${{ secrets.BOOSTED_MOD_PERSONAL_TOKEN_CLASSIC }} | |
ORGANIZATION: ${{ github.repository_owner }} | |
PR_ID: ${{ github.event.pull_request.node_id }} | |
PROJECT_NUMBER: ${{ vars.PR_BOARD_PROJECT_NUMBER }} | |
PROJECT_DESIGN_A11Y_COL: ${{ vars.PR_BOARD_NEED_DESIGN_A11Y_REVIEW_COL_NAME }} | |
PROJECT_LEAD_COL: ${{ vars.PR_BOARD_NEED_LEAD_DEV_REVIEW_COL_NAME }} | |
run: | | |
gh api graphql -f query=' | |
query($org: String!, $number: Int!) { | |
organization(login: $org){ | |
projectV2(number: $number) { | |
id | |
fields(first:10) { | |
nodes { | |
... on ProjectV2Field { | |
id | |
name | |
} | |
... on ProjectV2SingleSelectField { | |
id | |
name | |
options { | |
id | |
name | |
} | |
} | |
} | |
} | |
items(first:100) { | |
nodes { | |
id | |
content { | |
... on PullRequest { | |
id | |
} | |
} | |
} | |
} | |
} | |
} | |
}' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json | |
# echo `cat project_data.json` | |
echo 'PROJECT_ID='$(jq '.data.organization.projectV2.id' project_data.json) >> $GITHUB_ENV | |
echo 'STATUS_FIELD_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV | |
echo 'TARGET_COL_ID1='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .options[] | select(.name=="${{ env.PROJECT_DESIGN_A11Y_COL }}") |.id' project_data.json) >> $GITHUB_ENV | |
echo 'TARGET_COL_ID2='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .options[] | select(.name=="${{ env.PROJECT_LEAD_COL }}") |.id' project_data.json) >> $GITHUB_ENV | |
echo 'ITEM_ID='$(jq '.data.organization.projectV2.items.nodes[] | select(.content.id=="${{ env.PR_ID }}") |.id' project_data.json) >> $GITHUB_ENV | |
- name: Change project card to the design and/or accessibility column | |
if: contains(github.event.pull_request.labels.*.name, 'upcoming a11y review') || contains(github.event.pull_request.labels.*.name, 'upcoming design review') || contains(github.event.pull_request.labels.*.name, 'ready for a11y review') || contains(github.event.pull_request.labels.*.name, 'ready for design review') | |
env: | |
GITHUB_TOKEN: ${{ secrets.BOOSTED_MOD_PERSONAL_TOKEN_CLASSIC }} | |
run: | | |
gh api graphql -f query=' | |
mutation ( | |
$project: ID! | |
$item: ID! | |
$status_field: ID! | |
$status_value: String! | |
) { | |
set_status: updateProjectV2ItemFieldValue(input: { | |
projectId: $project | |
itemId: $item | |
fieldId: $status_field | |
value: { | |
singleSelectOptionId: $status_value | |
} | |
}) { | |
projectV2Item { | |
id | |
} | |
} | |
}' -f project=$PROJECT_ID -f item=$ITEM_ID -f status_field=$STATUS_FIELD_ID -f status_value=${{ env.TARGET_COL_ID1 }} --silent | |
- name: Change project card to the lead tech column | |
if: "!(contains(github.event.pull_request.labels.*.name, 'upcoming a11y review') || contains(github.event.pull_request.labels.*.name, 'upcoming design review') || contains(github.event.pull_request.labels.*.name, 'ready for a11y review') || contains(github.event.pull_request.labels.*.name, 'ready for design review'))" | |
env: | |
GITHUB_TOKEN: ${{ secrets.BOOSTED_MOD_PERSONAL_TOKEN_CLASSIC }} | |
run: | | |
gh api graphql -f query=' | |
mutation ( | |
$project: ID! | |
$item: ID! | |
$status_field: ID! | |
$status_value: String! | |
) { | |
set_status: updateProjectV2ItemFieldValue(input: { | |
projectId: $project | |
itemId: $item | |
fieldId: $status_field | |
value: { | |
singleSelectOptionId: $status_value | |
} | |
}) { | |
projectV2Item { | |
id | |
} | |
} | |
}' -f project=$PROJECT_ID -f item=$ITEM_ID -f status_field=$STATUS_FIELD_ID -f status_value=${{ env.TARGET_COL_ID2 }} --silent |