Skip to content

Commit 674d612

Browse files
author
Himanshu Singhal
committed
AIRA-64: Project Automation Action Update
1 parent f112839 commit 674d612

File tree

1 file changed

+30
-62
lines changed

1 file changed

+30
-62
lines changed

.github/workflows/project-automation.yml

Lines changed: 30 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on:
77
types: [opened, closed, ready_for_review, converted_to_draft]
88

99
env:
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

1212
jobs:
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

Comments
 (0)