Skip to content

Commit d46ab0c

Browse files
committed
Simplify workflow: use plain Node.js script instead of github-script action
1 parent 64aaa24 commit d46ab0c

4 files changed

Lines changed: 249 additions & 25 deletions

File tree

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
const fs = require('fs');
22
const { parse } = require('yaml');
3+
const { Octokit } = require('@octokit/rest');
34

4-
module.exports = async ({ github, context, core }) => {
5-
// Extract component name from label
6-
const labelName = context.payload.label.name;
5+
async function main() {
6+
// Get inputs from environment
7+
const token = process.env.GITHUB_TOKEN;
8+
const labelName = process.env.LABEL_NAME;
9+
const issueNumber = parseInt(process.env.ISSUE_NUMBER);
10+
const owner = process.env.REPO_OWNER;
11+
const repo = process.env.REPO_NAME;
712

813
if (!labelName.startsWith('component:')) {
9-
core.setFailed('Label does not match expected pattern');
10-
return;
14+
console.error('Label does not match expected pattern');
15+
process.exit(1);
1116
}
1217

1318
const componentName = labelName.replace('component:', '');
@@ -18,35 +23,40 @@ module.exports = async ({ github, context, core }) => {
1823
const data = parse(yamlContent);
1924

2025
if (!data || !data.components) {
21-
core.setFailed('Invalid component_owners.yml structure');
22-
return;
26+
console.error('Invalid component_owners.yml structure');
27+
process.exit(1);
2328
}
2429

2530
const components = data.components;
2631

2732
if (!(componentName in components)) {
28-
core.setFailed(`Component '${componentName}' not found in component_owners.yml`);
29-
return;
33+
console.error(`Component '${componentName}' not found in component_owners.yml`);
34+
process.exit(1);
3035
}
3136

3237
const owners = components[componentName];
3338

3439
if (!owners || owners.length === 0) {
35-
core.setFailed(`No owners found for component '${componentName}'`);
36-
return;
40+
console.error(`No owners found for component '${componentName}'`);
41+
process.exit(1);
3742
}
3843

3944
console.log(`Found owners: ${owners.join(', ')}`);
4045

4146
// Assign the issue to the owners
42-
const issueNumber = context.payload.issue.number;
47+
const octokit = new Octokit({ auth: token });
4348

44-
await github.rest.issues.addAssignees({
45-
owner: context.repo.owner,
46-
repo: context.repo.repo,
49+
await octokit.rest.issues.addAssignees({
50+
owner,
51+
repo,
4752
issue_number: issueNumber,
4853
assignees: owners
4954
});
5055

5156
console.log(`Successfully assigned issue #${issueNumber} to ${owners.join(', ')}`);
52-
};
57+
}
58+
59+
main().catch(error => {
60+
console.error(error);
61+
process.exit(1);
62+
});

.github/scripts/package-lock.json

Lines changed: 215 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.github/scripts/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"description": "Dependencies for GitHub Action workflows",
55
"private": true,
66
"dependencies": {
7+
"@octokit/rest": "^21.0.2",
78
"yaml": "2.8.1"
89
}
910
}

.github/workflows/assign-issue-owners.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ jobs:
2929
run: npm ci
3030
working-directory: .github/scripts
3131

32-
- name: Parse component label and assign owners
33-
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
32+
- name: Assign issue to component owners
33+
run: node .github/scripts/assign-issue-owners.js
3434
env:
35-
NODE_PATH: ${{ github.workspace }}/.github/scripts/node_modules
36-
with:
37-
script: |
38-
const script = require('./.github/scripts/assign-issue-owners.js');
39-
await script({ github, context, core });
35+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
36+
LABEL_NAME: ${{ github.event.label.name }}
37+
ISSUE_NUMBER: ${{ github.event.issue.number }}
38+
REPO_OWNER: ${{ github.repository_owner }}
39+
REPO_NAME: ${{ github.event.repository.name }}

0 commit comments

Comments
 (0)