From 527e415d189bcc47a8faea46dea6feb961464370 Mon Sep 17 00:00:00 2001 From: santiagosayshey Date: Fri, 28 Jun 2024 08:29:33 +0930 Subject: [PATCH] bugfix: Correct issue number extraction and project item status update --- .github/workflows/add-issue-to-project.yml | 96 +++++++++++++++++----- .github/workflows/new-branch-created.yml | 2 +- 2 files changed, 76 insertions(+), 22 deletions(-) diff --git a/.github/workflows/add-issue-to-project.yml b/.github/workflows/add-issue-to-project.yml index 1e6c8df..835abdd 100644 --- a/.github/workflows/add-issue-to-project.yml +++ b/.github/workflows/add-issue-to-project.yml @@ -1,33 +1,27 @@ -name: Set Issue to In Development on Branch Creation +name: Add Issue to Project on: - create: - branches: - - '*' + issues: + types: [opened] jobs: - update-issue-status: - name: Update issue status to In Development + add-to-project: + name: Add issue to project runs-on: ubuntu-latest steps: - - name: Extract issue number from branch name - id: extract-issue-number - run: | - BRANCH_NAME="${GITHUB_REF##*/}" - if [[ "$BRANCH_NAME" =~ ^([0-9]+)- ]]; then - ISSUE_NUMBER="${BASH_REMATCH[1]}" - echo "ISSUE_NUMBER=$ISSUE_NUMBER" >> $GITHUB_ENV - else - echo "No issue number found in branch name." - exit 1 - fi + - name: Add to Project + id: add-to-project + uses: actions/add-to-project@v0.5.0 + with: + project-url: https://github.com/orgs/Dictionarry-Hub/projects/1 + github-token: ${{ secrets.ADD_TO_PROJECT_PAT }} - name: Get project item ID id: get-project-item-id env: GITHUB_TOKEN: ${{ secrets.ADD_TO_PROJECT_PAT }} PROJECT_ID: "PVT_kwDOCjbMFM4AjuUh" - ISSUE_NUMBER: ${{ env.ISSUE_NUMBER }} + ISSUE_NUMBER: ${{ github.event.issue.number }} run: | echo "Fetching project item ID for issue number: $ISSUE_NUMBER" item_id=$(gh api graphql -f query=' @@ -55,12 +49,14 @@ jobs: echo "PROJECT_ITEM_ID=$item_id" >> $GITHUB_OUTPUT fi - - name: Set status to "In Development" + - name: Set component, type, and status env: GITHUB_TOKEN: ${{ secrets.ADD_TO_PROJECT_PAT }} PROJECT_ITEM_ID: ${{ steps.get-project-item-id.outputs.PROJECT_ITEM_ID }} run: | - echo "Setting status for Project Item ID: ${PROJECT_ITEM_ID}" + echo "Setting fields for Project Item ID: ${PROJECT_ITEM_ID}" + + # Set component to "Profilarr" result=$(gh api graphql -f query=' mutation($project:ID!, $item:ID!, $fieldId:ID!, $value:String!) { updateProjectV2ItemFieldValue(input: { @@ -75,5 +71,63 @@ jobs: id } } - }' -f project="PVT_kwDOCjbMFM4AjuUh" -f item="${PROJECT_ITEM_ID}" -f fieldId="PVTSSF_lADOCjbMFM4AjuUhzgcCn8s" -f value="in-development") + }' -f project="PVT_kwDOCjbMFM4AjuUh" -f item="${PROJECT_ITEM_ID}" -f fieldId="PVTSSF_lADOCjbMFM4AjuUhzgcCr_E" -f value="48fc49c7") + echo "Set component result: $result" + + # Set status to "Backlog" + result=$(gh api graphql -f query=' + mutation($project:ID!, $item:ID!, $fieldId:ID!, $value:String!) { + updateProjectV2ItemFieldValue(input: { + projectId: $project + itemId: $item + fieldId: $fieldId + value: { + singleSelectOptionId: $value + } + }) { + projectV2Item { + id + } + } + }' -f project="PVT_kwDOCjbMFM4AjuUh" -f item="${PROJECT_ITEM_ID}" -f fieldId="PVTSSF_lADOCjbMFM4AjuUhzgcCn8s" -f value="f75ad846") echo "Set status result: $result" + + # Get the label of the issue + LABEL=$(gh api repos/${{ github.repository }}/issues/${{ github.event.issue.number }} --jq '.labels[0].name') + echo "Issue label: $LABEL" + + # Convert label to lowercase for comparison + LABEL_LOWER=$(echo "$LABEL" | tr '[:upper:]' '[:lower:]') + + # Set issue type based on label + ISSUE_TYPE_ID=$(case $LABEL_LOWER in + "bug") echo "b760225f" ;; + "feature request") echo "1341bde2" ;; + "improvement") echo "cb34d96f" ;; + "documentation") echo "269885d0" ;; + "refactor") echo "4996f537" ;; + "infrastructure") echo "45a91bfe" ;; + *) echo "" ;; + esac) + + if [ -z "$ISSUE_TYPE_ID" ]; then + echo "No matching issue type for label: $LABEL" + else + echo "Setting issue type to ID: $ISSUE_TYPE_ID" + result=$(gh api graphql -f query=' + mutation($project:ID!, $item:ID!, $fieldId:ID!, $value:String!) { + updateProjectV2ItemFieldValue(input: { + projectId: $project + itemId: $item + fieldId: $fieldId + value: { + singleSelectOptionId: $value + } + }) { + projectV2Item { + id + } + } + }' -f project="PVT_kwDOCjbMFM4AjuUh" -f item="${PROJECT_ITEM_ID}" -f fieldId="PVTSSF_lADOCjbMFM4AjuUhzgcCswQ" -f value="$ISSUE_TYPE_ID") + echo "Set issue type result: $result" + fi \ No newline at end of file diff --git a/.github/workflows/new-branch-created.yml b/.github/workflows/new-branch-created.yml index b8c1660..e06ce15 100644 --- a/.github/workflows/new-branch-created.yml +++ b/.github/workflows/new-branch-created.yml @@ -72,7 +72,7 @@ jobs: id } } - }' -f repository="${{ github.repository }}" -f owner="${{ github.repository_owner.login }}" -F number=$ISSUE_NUMBER --jq '.data.repository.issue.id') + }' -f repository="${{ github.repository }}" -f owner="${{ github.repository_owner.login }}" -f number=$ISSUE_NUMBER --jq '.data.repository.issue.id') echo "ISSUE_NODE_ID=$ISSUE_NODE_ID" # Set the status to "In Development"