155 lines
6.2 KiB
YAML
155 lines
6.2 KiB
YAML
# 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/labeler@1.1.0
|
||
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/labeler@1.1.0
|
||
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/labeler@1.1.0, 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/labeler@1.1.0
|
||
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/labeler@1.1.0
|
||
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/labeler@1.1.0
|
||
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/labeler@1.1.0
|
||
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/labeler@1.1.0
|
||
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/auto-assign-issue@v1.11.0
|
||
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/auto-assign-issue@v1.11.0
|
||
with:
|
||
numOfAssignee: 1
|
||
removePreviousAssignees: true
|
||
teams: ${{ env.SUPPORT_TEAM_NAME }}
|
||
repo-token: ${{ secrets.BITNAMI_BOT_TOKEN }}
|
||
allowSelfAssign: false
|