Skip to content

Commit 4a8f93d

Browse files
adds astro-ecosystem-ci trigger
1 parent 7bdcfb7 commit 4a8f93d

1 file changed

Lines changed: 92 additions & 0 deletions

File tree

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
name: ecosystem-ci trigger
2+
3+
on:
4+
issue_comment:
5+
types: [created]
6+
7+
jobs:
8+
trigger:
9+
runs-on: ubuntu-latest
10+
if: github.event.issue.pull_request && startsWith(github.event.comment.body, '!ecosystem-ci run')
11+
steps:
12+
- uses: actions/github-script@v7
13+
with:
14+
script: |
15+
const user = context.payload.sender.login
16+
console.log(`Validate user: ${user}`)
17+
18+
let hasTriagePermission = false
19+
try {
20+
const { data } = await github.rest.repos.getCollaboratorPermissionLevel({
21+
owner: context.repo.owner,
22+
repo: context.repo.repo,
23+
username: user,
24+
});
25+
hasTriagePermission = data.user.permissions.triage
26+
} catch (e) {
27+
console.warn(e)
28+
}
29+
if (hasTriagePermission) {
30+
console.log('Allowed')
31+
await github.rest.reactions.createForIssueComment({
32+
owner: context.repo.owner,
33+
repo: context.repo.repo,
34+
comment_id: context.payload.comment.id,
35+
content: '+1',
36+
})
37+
} else {
38+
console.log('Not allowed')
39+
await github.rest.reactions.createForIssueComment({
40+
owner: context.repo.owner,
41+
repo: context.repo.repo,
42+
comment_id: context.payload.comment.id,
43+
content: '-1',
44+
})
45+
throw new Error('not allowed')
46+
}
47+
- uses: actions/github-script@v7
48+
id: get-pr-data
49+
with:
50+
script: |
51+
console.log(`Get PR info: ${context.repo.owner}/${context.repo.repo}#${context.issue.number}`)
52+
const { data: pr } = await github.rest.pulls.get({
53+
owner: context.repo.owner,
54+
repo: context.repo.repo,
55+
pull_number: context.issue.number
56+
})
57+
return {
58+
num: context.issue.number,
59+
branchName: pr.head.ref,
60+
repo: pr.head.repo.full_name
61+
}
62+
- id: generate-token
63+
uses: tibdex/github-app-token@v2
64+
with:
65+
app_id: ${{ secrets.ECOSYSTEM_CI_GITHUB_APP_ID }}
66+
private_key: ${{ secrets.ECOSYSTEM_CI_GITHUB_APP_PRIVATE_KEY }}
67+
installation_retrieval_payload: "${{ github.repository_owner }}/astro-ecosystem-ci"
68+
- uses: actions/github-script@v7
69+
id: trigger
70+
env:
71+
COMMENT: ${{ github.event.comment.body }}
72+
with:
73+
github-token: ${{ steps.generate-token.outputs.token }}
74+
result-encoding: string
75+
script: |
76+
const comment = process.env.COMMENT.trim()
77+
const prData = ${{ steps.get-pr-data.outputs.result }}
78+
79+
const suite = comment.split('\n')[0].replace(/^\!ecosystem-ci run/, '').trim()
80+
81+
await github.rest.actions.createWorkflowDispatch({
82+
owner: context.repo.owner,
83+
repo: 'astro-ecosystem-ci',
84+
workflow_id: 'ecosystem-ci-from-pr.yml',
85+
ref: 'main',
86+
inputs: {
87+
prNumber: '' + prData.num,
88+
branchName: prData.branchName,
89+
repo: prData.repo,
90+
suite: suite === '' ? '-' : suite
91+
}
92+
})

0 commit comments

Comments
 (0)