mirror of
https://github.com/Dictionarry-Hub/database.git
synced 2025-12-18 11:47:04 +00:00
129 lines
4.5 KiB
YAML
129 lines
4.5 KiB
YAML
name: Add Issue to Project
|
|
|
|
on:
|
|
issues:
|
|
types: [opened]
|
|
|
|
jobs:
|
|
add-to-project:
|
|
name: Add issue to project
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- 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: ${{ github.event.issue.number }}
|
|
run: |
|
|
echo "Fetching project item ID for issue number: $ISSUE_NUMBER"
|
|
item_id=$(gh api graphql -f query='
|
|
query($project:ID!) {
|
|
node(id: $project) {
|
|
... on ProjectV2 {
|
|
items(first: 100) {
|
|
nodes {
|
|
id
|
|
content {
|
|
... on Issue {
|
|
number
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}' -f project=$PROJECT_ID --jq ".data.node.items.nodes[] | select(.content.number == $ISSUE_NUMBER) | .id" -F number=$ISSUE_NUMBER)
|
|
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_OUTPUT
|
|
fi
|
|
|
|
- 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 fields for Project Item ID: ${PROJECT_ITEM_ID}"
|
|
|
|
# Set component to "Database"
|
|
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_lADOCjbMFM4AjuUhzgcCr_E" -f value="64e29a2c")
|
|
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/Dictionarry-Hub/database/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" ;;
|
|
"improvement") echo "269885d0" ;;
|
|
*) 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 |