@@ -34,23 +34,48 @@ jobs:
34
34
// Querying Lastest Work Items
35
35
const queryResult = await adoClient.queryById(process.env.query_id);
36
36
37
- // Iterate over work items
37
+ // Iterate over work items, including relations
38
+ // https://github.com/microsoft/azure-devops-node-api/blob/master/api/interfaces/WorkItemTrackingInterfaces.ts#L1485
38
39
const workItemsDetails = await adoClient.getWorkItems(queryResult.workItems.map(wi => wi.id), null, null, 1);
39
40
40
41
// Obtain GitHub Issue Number
41
42
function getGitHubIssueNumber(workItem) {
43
+
44
+ // Try using relations
42
45
const relation = workItem.relations.find(r => r.rel === 'Hyperlink' && r.url.includes('github.com'));
43
46
if (relation) {
44
47
const match = relation.url.match(/github.com\/[^/]+\/[^/]+\/issues\/(\d+)/);
45
48
if (match) {
46
49
return match[1];
47
50
}
48
51
}
52
+
53
+ // Try using the title, which includes [GitHub #123]
54
+ const match = workItem.fields['System.Title'].match(/\[GitHub #(\d+)\]/);
55
+ if (match) {
56
+ return match[1];
57
+ }
58
+
49
59
return null;
50
60
}
51
-
52
- // Map ADO work items to GitHub number
53
- const ghIssueNumbers = workItemsDetails.map(wi => getGitHubIssueNumber(wi));
54
- console.log(ghIssueNumbers);
61
+
62
+ // Map ADO work items to GitHub number, remove nulls
63
+ const ghIssueNumbers = workItemsDetails.map(wi => getGitHubIssueNumber(wi)).filter(n => n !== null);
64
+
65
+ // Add priority-low label to GitHub issues
66
+ const addLowPriorityLabel = async (issueNumber) => {
67
+ await github.rest.issues.addLabels({
68
+ issue_number : issueNumber,
69
+ owner : context.repo.owner,
70
+ repo : context.repo.repo,
71
+ labels : ['priority-low']
72
+ });
73
+ }
74
+
75
+ ghIssueNumbers.forEach(async (issueNumber) => {
76
+ await addLowPriorityLabel(issueNumber);
77
+ });
78
+
79
+
55
80
56
81
0 commit comments