Update Issue Status to In Development #26
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
name: Update Issue Status to In Development | |
on: | |
create: | |
branches: | |
- '*-*' | |
jobs: | |
update-status: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Extract Issue Number from Branch Name | |
id: extract-issue-number | |
run: | | |
ISSUE_NUMBER=$(echo $GITHUB_REF_NAME | cut -d'-' -f1) | |
echo "Issue Number extracted: $ISSUE_NUMBER" | |
echo "ISSUE_NUMBER=$ISSUE_NUMBER" >> $GITHUB_ENV | |
- name: Get project item ID | |
id: get-project-item-id | |
env: | |
GITHUB_TOKEN: ${{ secrets.ADD_TO_PROJECT_PAT }} | |
PROJECT_ID: "PVT_kwDOCjbMFM4AjuUh" | |
run: | | |
echo "Fetching project item ID for issue number: $ISSUE_NUMBER" | |
QUERY=' | |
query fetchProjectItem($project: ID!) { | |
node(id: $project) { | |
... on ProjectV2 { | |
items(first: 100) { | |
nodes { | |
id | |
content { | |
... on Issue { | |
number | |
} | |
} | |
} | |
} | |
} | |
} | |
}' | |
item_id=$(gh api graphql -f query="$QUERY" -f project=$PROJECT_ID --jq '.data.node.items.nodes[] | select(.content.number == '"$ISSUE_NUMBER"') | .id') | |
if [ -z "$item_id" ]; then | |
echo "Error: Project item ID not found for issue number $ISSUE_NUMBER" | |
exit 1 | |
else | |
echo "Project item ID found: $item_id" | |
echo "PROJECT_ITEM_ID=$item_id" >> $GITHUB_ENV | |
fi | |
- name: Get single select field ID and options | |
id: get-field-options | |
env: | |
GITHUB_TOKEN: ${{ secrets.ADD_TO_PROJECT_PAT }} | |
PROJECT_ID: "PVT_kwDOCjbMFM4AjuUh" | |
run: | | |
echo "Fetching field ID and options for status" | |
QUERY=' | |
query($project:ID!) { | |
node(id: $project) { | |
... on ProjectV2 { | |
fields(first: 100) { | |
nodes { | |
... on ProjectV2SingleSelectField { | |
id | |
name | |
options { | |
id | |
name | |
} | |
} | |
} | |
} | |
} | |
} | |
}' | |
field_data=$(gh api graphql -f query="$QUERY" -f project=$PROJECT_ID --jq '.data.node.fields.nodes[] | select(.name == "Status")') | |
field_id=$(echo $field_data | jq -r '.id') | |
in_development_option_id=$(echo $field_data | jq -r '.options[] | select(.name == "In Development") | .id') | |
if [ -z "$field_id" ] || [ -z "$in_development_option_id" ]; then | |
echo "Error: Field ID or In Development option ID not found" | |
exit 1 | |
else | |
echo "Field ID: $field_id" | |
echo "In Development option ID: $in_development_option_id" | |
echo "FIELD_ID=$field_id" >> $GITHUB_ENV | |
echo "IN_DEVELOPMENT_OPTION_ID=$in_development_option_id" >> $GITHUB_ENV | |
fi | |
- name: Set status to In Development | |
env: | |
GITHUB_TOKEN: ${{ secrets.ADD_TO_PROJECT_PAT }} | |
PROJECT_ITEM_ID: ${{ env.PROJECT_ITEM_ID }} | |
FIELD_ID: ${{ env.FIELD_ID }} | |
IN_DEVELOPMENT_OPTION_ID: ${{ env.IN_DEVELOPMENT_OPTION_ID }} | |
run: | | |
echo "Setting status for Project Item ID: ${PROJECT_ITEM_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="${FIELD_ID}" -f value="${IN_DEVELOPMENT_OPTION_ID}") | |
echo "Set status result: $result" |