77 types : [opened, closed, ready_for_review, converted_to_draft]
88
99env :
10- PROJECT_ID : PVT_kwHOAGEyUM4A_SBA # GitHub Project V2 ID
10+ PROJECT_NUMBER : 1 # Change this to your project number (find in project URL)
1111
1212jobs :
1313 update-project :
@@ -18,12 +18,12 @@ jobs:
1818 with :
1919 github-token : ${{ secrets.GITHUB_TOKEN }}
2020 script : |
21- const PROJECT_ID = process.env.PROJECT_ID ;
21+ const PROJECT_NUMBER = parseInt( process.env.PROJECT_NUMBER) ;
2222
2323 // Helper function to get project info
2424 async function getProjectInfo() {
2525 // Try organization project first
26- let query = `
26+ const orgQuery = `
2727 query($org: String!, $projectNumber: Int!) {
2828 organization(login: $org) {
2929 projectV2(number: $projectNumber) {
@@ -50,20 +50,21 @@ jobs:
5050 `;
5151
5252 try {
53- // If PROJECT_ID is a number, use it as project number
54- if (/^\d+$/.test(PROJECT_ID)) {
55- const result = await github.graphql(query, {
56- org: context.repo.owner,
57- projectNumber: parseInt(PROJECT_ID)
58- });
59- return result.organization.projectV2;
60- }
53+ console.log(`Looking for organization project ${PROJECT_NUMBER} in ${context.repo.owner}`);
54+ const result = await github.graphql(orgQuery, {
55+ org: context.repo.owner,
56+ projectNumber: PROJECT_NUMBER
57+ });
58+ console.log(`✅ Found organization project: ${result.organization.projectV2.id}`);
59+ return result.organization.projectV2;
60+ } catch (orgError) {
61+ console.log('Organization project not found, trying repository project...');
6162
62- // Otherwise try as global ID
63- query = `
64- query($projectId: ID !) {
65- node(id : $projectId ) {
66- ... on ProjectV2 {
63+ // Try repository-level project as fallback
64+ const repoQuery = `
65+ query($owner: String!, $repo: String!, $projectNumber: Int !) {
66+ repository(owner : $owner, name: $repo ) {
67+ projectV2(number: $projectNumber) {
6768 id
6869 fields(first: 20) {
6970 nodes {
@@ -86,54 +87,21 @@ jobs:
8687 }
8788 `;
8889
89- const result = await github.graphql(query, {
90- projectId: PROJECT_ID
91- });
92- return result.node;
93- } catch (error) {
94- console.log('Error fetching project info:', error);
95-
96- // Try repository-level project as fallback
9790 try {
98- query = `
99- query($owner: String!, $repo: String!, $projectNumber: Int!) {
100- repository(owner: $owner, name: $repo) {
101- projectV2(number: $projectNumber) {
102- id
103- fields(first: 20) {
104- nodes {
105- ... on ProjectV2Field {
106- id
107- name
108- }
109- ... on ProjectV2SingleSelectField {
110- id
111- name
112- options {
113- id
114- name
115- }
116- }
117- }
118- }
119- }
120- }
121- }
122- `;
123-
124- if (/^\d+$/.test(PROJECT_ID)) {
125- const result = await github.graphql(query, {
126- owner: context.repo.owner,
127- repo: context.repo.repo,
128- projectNumber: parseInt(PROJECT_ID)
129- });
130- return result.repository.projectV2;
131- }
132- } catch (fallbackError) {
133- console.log('Repository project fallback failed:', fallbackError);
91+ console.log(`Looking for repository project ${PROJECT_NUMBER} in ${context.repo.owner}/${context.repo.repo}`);
92+ const result = await github.graphql(repoQuery, {
93+ owner: context.repo.owner,
94+ repo: context.repo.repo,
95+ projectNumber: PROJECT_NUMBER
96+ });
97+ console.log(`✅ Found repository project: ${result.repository.projectV2.id}`);
98+ return result.repository.projectV2;
99+ } catch (repoError) {
100+ console.log('❌ No project found at organization or repository level');
101+ console.log('Organization error:', orgError.message);
102+ console.log('Repository error:', repoError.message);
103+ return null;
134104 }
135-
136- return null;
137105 }
138106 }
139107
0 commit comments