# 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