-
Notifications
You must be signed in to change notification settings - Fork 499
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Sync issue automation with element-web
Add automation for * labelling Labs issues * adding design and product issues to boards * adding design and product PRs to boards * add UISI issues to Crypto team board Fixes issue #5380
- Loading branch information
Showing
4 changed files
with
217 additions
and
1 deletion.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,6 +5,31 @@ on: | |
types: [labeled] | ||
|
||
jobs: | ||
apply_Z-Labs_label: | ||
name: Add Z-Labs label for features behind labs flags | ||
runs-on: ubuntu-latest | ||
if: > | ||
contains(github.event.issue.labels.*.name, 'A-Maths') || | ||
contains(github.event.issue.labels.*.name, 'A-Message-Pinning') || | ||
contains(github.event.issue.labels.*.name, 'A-Threads') || | ||
contains(github.event.issue.labels.*.name, 'A-Polls') || | ||
contains(github.event.issue.labels.*.name, 'A-Location-Sharing') || | ||
contains(github.event.issue.labels.*.name, 'A-Message-Bubbles') || | ||
contains(github.event.issue.labels.*.name, 'Z-IA') || | ||
contains(github.event.issue.labels.*.name, 'A-Themes-Custom') || | ||
contains(github.event.issue.labels.*.name, 'A-E2EE-Dehydration') || | ||
contains(github.event.issue.labels.*.name, 'A-Tags') | ||
steps: | ||
- uses: actions/github-script@v5 | ||
with: | ||
script: | | ||
github.rest.issues.addLabels({ | ||
issue_number: context.issue.number, | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
labels: ['Z-Labs'] | ||
}) | ||
move_needs_info_issues: | ||
name: X-Needs-Info issues to Need info column on triage board | ||
runs-on: ubuntu-latest | ||
|
@@ -47,13 +72,38 @@ jobs: | |
PROJECT_ID: "PN_kwDOAM0swc0sUA" | ||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }} | ||
|
||
add_product_issues_to_project: | ||
name: X-Needs-Product to Design project board | ||
runs-on: ubuntu-latest | ||
if: > | ||
contains(github.event.issue.labels.*.name, 'X-Needs-Product') | ||
steps: | ||
- uses: octokit/[email protected] | ||
id: add_to_project | ||
with: | ||
headers: '{"GraphQL-Features": "projects_next_graphql"}' | ||
query: | | ||
mutation add_to_project($projectid:ID!,$contentid:ID!) { | ||
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) { | ||
projectNextItem { | ||
id | ||
} | ||
} | ||
} | ||
projectid: ${{ env.PROJECT_ID }} | ||
contentid: ${{ github.event.issue.node_id }} | ||
env: | ||
PROJECT_ID: "PN_kwDOAM0swc4AAg6N" | ||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }} | ||
|
||
Delight_issues_to_board: | ||
name: Spaces issues to Delight project board | ||
runs-on: ubuntu-latest | ||
if: > | ||
contains(github.event.issue.labels.*.name, 'A-Spaces') || | ||
contains(github.event.issue.labels.*.name, 'A-Space-Settings') || | ||
contains(github.event.issue.labels.*.name, 'A-Subspaces') | ||
contains(github.event.issue.labels.*.name, 'A-Subspaces') || | ||
contains(github.event.issue.labels.*.name, 'Z-IA') | ||
steps: | ||
- uses: octokit/[email protected] | ||
with: | ||
|
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
name: Move pull requests asking for review to the relevant project | ||
on: | ||
pull_request_target: | ||
types: [review_requested] | ||
|
||
jobs: | ||
add_design_pr_to_project: | ||
name: Move PRs asking for design review to the design board | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: octokit/[email protected] | ||
id: find_team_members | ||
with: | ||
headers: '{"GraphQL-Features": "projects_next_graphql"}' | ||
query: | | ||
query find_team_members($team: String!) { | ||
organization(login: "vector-im") { | ||
team(slug: $team) { | ||
members { | ||
nodes { | ||
login | ||
} | ||
} | ||
} | ||
} | ||
} | ||
team: ${{ env.TEAM }} | ||
env: | ||
TEAM: "design" | ||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }} | ||
- id: any_matching_reviewers | ||
run: | | ||
# Fetch requested reviewers, and people who are on the team | ||
echo '${{ tojson(fromjson(steps.find_team_members.outputs.data).organization.team.members.nodes[*].login) }}' | tee /tmp/team_members.json | ||
echo '${{ tojson(github.event.pull_request.requested_reviewers[*].login) }}' | tee /tmp/reviewers.json | ||
jq --raw-output .[] < /tmp/team_members.json | sort | tee /tmp/team_members.txt | ||
jq --raw-output .[] < /tmp/reviewers.json | sort | tee /tmp/reviewers.txt | ||
# Fetch requested team reviewers, and the name of the team | ||
echo '${{ tojson(github.event.pull_request.requested_teams[*].slug) }}' | tee /tmp/team_reviewers.json | ||
jq --raw-output .[] < /tmp/team_reviewers.json | sort | tee /tmp/team_reviewers.txt | ||
echo '${{ env.TEAM }}' | tee /tmp/team.txt | ||
# If either a reviewer matches a team member, or a team matches our team, say "true" | ||
if [ $(join /tmp/team_members.txt /tmp/reviewers.txt | wc -l) != 0 ]; then | ||
echo "::set-output name=match::true" | ||
elif [ $(join /tmp/team.txt /tmp/team_reviewers.txt | wc -l) != 0 ]; then | ||
echo "::set-output name=match::true" | ||
else | ||
echo "::set-output name=match::false" | ||
fi | ||
env: | ||
TEAM: "design" | ||
- uses: octokit/[email protected] | ||
id: add_to_project | ||
if: steps.any_matching_reviewers.outputs.match == 'true' | ||
with: | ||
headers: '{"GraphQL-Features": "projects_next_graphql"}' | ||
query: | | ||
mutation add_to_project($projectid:ID!, $contentid:ID!) { | ||
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) { | ||
projectNextItem { | ||
id | ||
} | ||
} | ||
} | ||
projectid: ${{ env.PROJECT_ID }} | ||
contentid: ${{ github.event.pull_request.node_id }} | ||
env: | ||
PROJECT_ID: "PN_kwDOAM0swc0sUA" | ||
TEAM: "design" | ||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }} | ||
|
||
add_product_pr_to_project: | ||
name: Move PRs asking for design review to the design board | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: octokit/[email protected] | ||
id: find_team_members | ||
with: | ||
headers: '{"GraphQL-Features": "projects_next_graphql"}' | ||
query: | | ||
query find_team_members($team: String!) { | ||
organization(login: "vector-im") { | ||
team(slug: $team) { | ||
members { | ||
nodes { | ||
login | ||
} | ||
} | ||
} | ||
} | ||
} | ||
team: ${{ env.TEAM }} | ||
env: | ||
TEAM: "product" | ||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }} | ||
- id: any_matching_reviewers | ||
run: | | ||
# Fetch requested reviewers, and people who are on the team | ||
echo '${{ tojson(fromjson(steps.find_team_members.outputs.data).organization.team.members.nodes[*].login) }}' | tee /tmp/team_members.json | ||
echo '${{ tojson(github.event.pull_request.requested_reviewers[*].login) }}' | tee /tmp/reviewers.json | ||
jq --raw-output .[] < /tmp/team_members.json | sort | tee /tmp/team_members.txt | ||
jq --raw-output .[] < /tmp/reviewers.json | sort | tee /tmp/reviewers.txt | ||
# Fetch requested team reviewers, and the name of the team | ||
echo '${{ tojson(github.event.pull_request.requested_teams[*].slug) }}' | tee /tmp/team_reviewers.json | ||
jq --raw-output .[] < /tmp/team_reviewers.json | sort | tee /tmp/team_reviewers.txt | ||
echo '${{ env.TEAM }}' | tee /tmp/team.txt | ||
# If either a reviewer matches a team member, or a team matches our team, say "true" | ||
if [ $(join /tmp/team_members.txt /tmp/reviewers.txt | wc -l) != 0 ]; then | ||
echo "::set-output name=match::true" | ||
elif [ $(join /tmp/team.txt /tmp/team_reviewers.txt | wc -l) != 0 ]; then | ||
echo "::set-output name=match::true" | ||
else | ||
echo "::set-output name=match::false" | ||
fi | ||
env: | ||
TEAM: "product" | ||
- uses: octokit/[email protected] | ||
id: add_to_project | ||
if: steps.any_matching_reviewers.outputs.match == 'true' | ||
with: | ||
headers: '{"GraphQL-Features": "projects_next_graphql"}' | ||
query: | | ||
mutation add_to_project($projectid:ID!, $contentid:ID!) { | ||
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) { | ||
projectNextItem { | ||
id | ||
} | ||
} | ||
} | ||
projectid: ${{ env.PROJECT_ID }} | ||
contentid: ${{ github.event.pull_request.node_id }} | ||
env: | ||
PROJECT_ID: "PN_kwDOAM0swc4AAg6N" | ||
TEAM: "product" | ||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }} |