@@ -20,25 +20,90 @@ jobs:
2020 create-docs-card :
2121 runs-on : ubuntu-latest
2222 steps :
23- - name : Create project card for documentation
23+ - name : Create project card for documentation (Projects v2)
2424 env :
2525 GH_TOKEN : ${{ secrets.GH_TOKEN }}
26- ISSUE_URL : ${{ inputs.issue_url }}
2726 ISSUE_TITLE : ${{ inputs.issue_title }}
27+ ISSUE_URL : ${{ inputs.issue_url }}
2828 REPO : ${{ inputs.repo }}
2929 run : |
30- COLUMN_NAME="Update docs"
30+ set -e
31+
32+ OWNER=$(echo "$REPO" | cut -d/ -f1)
33+ REPO_NAME=$(echo "$REPO" | cut -d/ -f2)
34+
35+ PROJECT_TITLE="Documentation Project" # Adjust this to your actual project name
36+ FIELD_NAME="Update docs" # Adjust this to your actual field (column) name
37+
38+ echo "Fetching Project ID..."
39+ PROJECT_ID=$(gh api graphql -F owner="$OWNER" -F name="$REPO_NAME" -F projectTitle="$PROJECT_TITLE" -f query='
40+ query($owner: String!, $name: String!, $projectTitle: String!) {
41+ repository(owner: $owner, name: $name) {
42+ projectsV2(first: 10, query: $projectTitle) {
43+ nodes {
44+ id
45+ title
46+ }
47+ }
48+ }
49+ }
50+ ' | jq -r '.data.repository.projectsV2.nodes[] | select(.title == env.PROJECT_TITLE) | .id')
51+
52+ if [ -z "$PROJECT_ID" ]; then
53+ echo "Project not found: $PROJECT_TITLE"
54+ exit 1
55+ fi
56+
57+ echo "Project ID found: $PROJECT_ID"
3158
32- PROJECT_ID=$(gh api repos/$REPO/projects | jq -r '.[0].id')
33- COLUMN_ID=$(gh api /projects/$PROJECT_ID/columns | jq -r ".[] | select(.name==\"$COLUMN_NAME\") | .id")
59+ echo "Fetching field ID for the column..."
60+ FIELD_ID=$(gh api graphql -f query='
61+ query ($projectId: ID!) {
62+ node(id: $projectId) {
63+ ... on ProjectV2 {
64+ fields(first: 20) {
65+ nodes {
66+ id
67+ name
68+ }
69+ }
70+ }
71+ }
72+ }
73+ ' -F projectId="$PROJECT_ID" | jq -r '.data.node.fields.nodes[] | select(.name=="'$FIELD_NAME'") | .id')
3474
35- if [ -z "$COLUMN_ID " ]; then
36- echo "Project column not found"
75+ if [ -z "$FIELD_ID " ]; then
76+ echo "Field ( column) not found: $FIELD_NAME "
3777 exit 1
3878 fi
3979
40- gh api /projects/columns/$COLUMN_ID/cards \
41- -f note="**${ISSUE_TITLE}**\n[Original Issue](${ISSUE_URL})" \
42- -H "Accept: application/vnd.github.v3+json"
80+ echo "Field ID found: $FIELD_ID"
81+
82+ echo "Creating a new project card..."
83+
84+ CREATE_CARD_MUTATION='
85+ mutation ($projectId: ID!, $title: String!) {
86+ addProjectV2ItemByDraftIssue(input: {
87+ projectId: $projectId,
88+ title: $title
89+ }) {
90+ item {
91+ id
92+ }
93+ }
94+ }
95+ '
96+
97+ CONTENT="**${ISSUE_TITLE}** - [Original Issue](${ISSUE_URL})"
98+
99+ RESULT=$(gh api graphql -f query="$CREATE_CARD_MUTATION" -F projectId="$PROJECT_ID" -F title="$CONTENT")
100+
101+ ITEM_ID=$(echo "$RESULT" | jq -r '.data.addProjectV2ItemByDraftIssue.item.id')
102+
103+ if [ -z "$ITEM_ID" ] || [ "$ITEM_ID" = "null" ]; then
104+ echo "Failed to create project card."
105+ echo "$RESULT"
106+ exit 1
107+ fi
43108
44- echo "Card created in column : $COLUMN_NAME "
109+ echo "Project card created successfully with ID : $ITEM_ID "
0 commit comments