[Support] Cards movements #50536
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 workflow is built to manage the triage support by using GH issues. | |
name: '[Support] Cards movements' | |
on: | |
project_card: | |
types: | |
- created | |
- moved | |
# Remove all permissions by default | |
permissions: {} | |
jobs: | |
get-issue: | |
runs-on: ubuntu-latest | |
name: Get issue info | |
permissions: | |
issues: read | |
pull-requests: read | |
outputs: | |
assignees: ${{ steps.get-issue-step.outputs.assignees }} | |
author: ${{ steps.get-issue-step.outputs.author }} | |
type: ${{ steps.get-issue-step.outputs.type }} | |
draft: ${{ steps.get-issue-step.outputs.draft }} | |
number: ${{ steps.get-issue-step.outputs.number }} | |
steps: | |
- name: Get issue info | |
id: get-issue-step | |
run: | | |
issue_info=$(curl -s --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' -X GET -G "${{ github.event.project_card.content_url }}" ) | |
assignees="$(echo $issue_info | jq -cr '.assignees')" | |
author="$(echo $issue_info | jq -r '.user.login')" | |
pull_request="$(echo $issue_info | jq -r '.pull_request')" | |
draft="$(echo $issue_info | jq -r '.draft' | sed -r "s|null|false|g")" | |
number="$(echo $issue_info | jq -r '.number')" | |
type="pull_request" | |
if [[ "${pull_request}" == "null" ]]; then | |
type="issue" | |
fi | |
echo "assignees=${assignees}" >> $GITHUB_OUTPUT | |
echo "author=${author}" >> $GITHUB_OUTPUT | |
echo "type=${type}" >> $GITHUB_OUTPUT | |
echo "draft=${draft}" >> $GITHUB_OUTPUT | |
echo "number=${number}" >> $GITHUB_OUTPUT | |
label-card: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
issues: write | |
pull-requests: write | |
needs: | |
- get-issue | |
steps: | |
- name: Repo checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 1 | |
- name: Load .env file | |
uses: xom9ikk/dotenv@v2 | |
with: | |
path: .github/workflows/ | |
# Now handling the needed labeling | |
- name: Triage labeling | |
# Only if moved into triage | |
if: ${{ github.event.project_card.column_id == env.TRIAGE_COLUMN_ID }} | |
uses: fmulero/[email protected] | |
with: | |
add-labels: triage | |
remove-labels: on-hold, in-progress, solved | |
- name: From Bitnami labeling | |
if: ${{ github.event.project_card.column_id == env.BITNAMI_COLUMN_ID }} | |
uses: fmulero/[email protected] | |
with: | |
add-labels: ${{ (needs.get-issue.outputs.author == 'bitnami-bot' && needs.get-issue.outputs.type == 'pull_request') && 'automated, auto-merge' || 'bitnami' }} | |
remove-labels: on-hold, in-progress, triage, solved | |
- name: Verify labeling | |
# Only if moved into bitnami column and the PR is ready for review | |
# Consecutive calls were fixed in fmulero/[email protected], see https://github.com/fmulero/labeler/pull/2 | |
if: | | |
github.event.project_card.column_id == env.BITNAMI_COLUMN_ID && | |
needs.get-issue.outputs.type == 'pull_request' && needs.get-issue.outputs.draft == 'false' | |
uses: fmulero/[email protected] | |
with: | |
repo-token: ${{ secrets.BITNAMI_BOT_TOKEN }} | |
add-labels: verify | |
- name: Build Maintenance labeling | |
if: ${{ github.event.project_card.column_id == env.BUILD_MAINTENANCE_COLUMN_ID }} | |
uses: fmulero/[email protected] | |
with: | |
add-labels: review-required | |
remove-labels: auto-merge | |
- name: On hold labeling | |
# Only if moved into on hold | |
if: ${{ github.event.project_card.column_id == env.ON_HOLD_COLUMN_ID }} | |
uses: fmulero/[email protected] | |
with: | |
add-labels: on-hold | |
remove-labels: triage, in-progress, solved | |
- name: In progress labeling | |
# Only if moved into In progress | |
if: ${{ github.event.project_card.column_id == env.IN_PROGRESS_COLUMN_ID }} | |
uses: fmulero/[email protected] | |
with: | |
add-labels: in-progress | |
remove-labels: on-hold, triage, solved | |
- name: Solved labeling | |
# Only if moved into Solved and the issue author is not bitnami-bot | |
if: | | |
github.event.project_card.column_id == env.SOLVED_COLUMN_ID && | |
(needs.get-issue.outputs.author != 'bitnami-bot') | |
uses: fmulero/[email protected] | |
with: | |
add-labels: solved | |
# Triage is not on the list to know how many issues/PRs are solved | |
# directly on triage | |
remove-labels: in-progress, on-hold | |
assign-assignee-if-needed: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
needs: | |
- get-issue | |
# The job shouldn't run for solved cards | |
steps: | |
- name: Repo checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 1 | |
- name: Load .env file | |
uses: xom9ikk/dotenv@v2 | |
with: | |
path: .github/workflows/ | |
- name: Assign to a person to work on it | |
# Assign when there is nobody assigned or the card is new. | |
# Cards in Build Maintenance column will remain unassigned. | |
if: | | |
github.event.project_card.column_id != env.SOLVED_COLUMN_ID && github.event.project_card.column_id != env.BUILD_MAINTENANCE_COLUMN_ID && | |
(needs.get-issue.outputs.assignees == '[]' || github.event.action == 'created') | |
uses: pozil/[email protected] | |
with: | |
numOfAssignee: 1 | |
teams: ${{ github.event.project_card.column_id == env.BITNAMI_COLUMN_ID && env.SUPPORT_TEAM_NAME || env.TRIAGE_TEAM_NAME }} | |
repo-token: ${{ secrets.BITNAMI_BOT_TOKEN }} | |
allowSelfAssign: false | |
- name: Reassign when moved into 'In progress' from 'Triage' | |
# Reassigned when moved into In progress FROM Triage | |
if: | | |
github.event.action == 'moved' && needs.get-issue.outputs.assignees != '[]' && | |
github.event.project_card.column_id == env.IN_PROGRESS_COLUMN_ID && | |
github.event.changes.column_id.from == env.TRIAGE_COLUMN_ID | |
uses: pozil/[email protected] | |
with: | |
numOfAssignee: 1 | |
removePreviousAssignees: true | |
teams: ${{ env.SUPPORT_TEAM_NAME }} | |
repo-token: ${{ secrets.BITNAMI_BOT_TOKEN }} | |
allowSelfAssign: false |