| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- name: ecosystem-ci trigger
- on:
- issue_comment:
- types: [created]
- jobs:
- trigger:
- runs-on: ubuntu-latest
- if: github.repository == 'vuejs/core' && github.event.issue.pull_request && startsWith(github.event.comment.body, '/ecosystem-ci run')
- steps:
- - name: Check user permission
- uses: actions/github-script@v8
- with:
- script: |
- const user = context.payload.sender.login
- console.log(`Validate user: ${user}`)
- let isVuejsMember = false
- try {
- const { status } = await github.rest.orgs.checkMembershipForUser({
- org: 'vuejs',
- username: user
- });
- isVuejsMember = (status === 204)
- } catch (e) {}
- if (isVuejsMember) {
- console.log('Allowed')
- await github.rest.reactions.createForIssueComment({
- owner: context.repo.owner,
- repo: context.repo.repo,
- comment_id: context.payload.comment.id,
- content: '+1',
- })
- } else {
- console.log('Not allowed')
- await github.rest.reactions.createForIssueComment({
- owner: context.repo.owner,
- repo: context.repo.repo,
- comment_id: context.payload.comment.id,
- content: '-1',
- })
- throw new Error('not allowed')
- }
- - name: Get PR info
- uses: actions/github-script@v8
- id: get-pr-data
- with:
- script: |
- console.log(`Get PR info: ${context.repo.owner}/${context.repo.repo}#${context.issue.number}`)
- const { data: pr } = await github.rest.pulls.get({
- owner: context.repo.owner,
- repo: context.repo.repo,
- pull_number: context.issue.number
- })
- return {
- num: context.issue.number,
- branchName: pr.head.ref,
- repo: pr.head.repo.full_name,
- commit: pr.head.sha
- }
- - name: Trigger run
- uses: actions/github-script@v8
- id: trigger
- env:
- COMMENT: ${{ github.event.comment.body }}
- with:
- github-token: ${{ secrets.ECOSYSTEM_CI_ACCESS_TOKEN }}
- result-encoding: string
- script: |
- const comment = process.env.COMMENT.trim()
- const prData = ${{ steps.get-pr-data.outputs.result }}
- const suite = comment.replace(/^\/ecosystem-ci run/, '').trim()
- await github.rest.actions.createWorkflowDispatch({
- owner: context.repo.owner,
- repo: 'ecosystem-ci',
- workflow_id: 'ecosystem-ci-from-pr.yml',
- ref: 'main',
- inputs: {
- prNumber: '' + prData.num,
- branchName: prData.branchName,
- repo: prData.repo,
- suite: suite === '' ? '-' : suite,
- commit: prData.commit
- }
- })
|