diff --git a/.github/workflows/pr-comment-ci.yml b/.github/workflows/pr-comment-ci.yml new file mode 100644 index 000000000..a489e6202 --- /dev/null +++ b/.github/workflows/pr-comment-ci.yml @@ -0,0 +1,95 @@ +name: PR_COMMENT_CI + +on: + issue_comment: + types: [created] + +jobs: + check: + runs-on: ubuntu-latest + outputs: + next_action: ${{ steps.get-action.outputs.next_action }} + if: ${{ github.event.issue.pull_request }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 1 + - uses: actions/github-script@v7 + id: get-action + with: + script: | + const user = context.payload.comment.user.login + core.debug(`user: ${user}`) + + const fs = require('fs') + const CODEOWNERS = fs.readFileSync('.github/CODEOWNERS', 'utf8') + core.debug(`CODEOWNERS: ${CODEOWNERS}`) + + let isReviewer = false; + CODEOWNERS.match(/@\w+/g).forEach((owner) => { + if (owner === `@${user}`) { + isReviewer = true + } + }) + + let next_action = '' + if (isReviewer) { + const body = context.payload.comment.body + core.info(`body: ${body}`) + if (body.startsWith('/update-common')) { + next_action='update-common' + } + if (body.startsWith('/update-snapshot')) { + next_action='update-snapshot' + } + } else { + core.warning('You are not collaborator'); + } + core.info(`next_action: ${next_action}`) + core.setOutput('next_action', next_action) + + update-common: + needs: check + runs-on: ubuntu-latest + if: ${{ needs.check.outputs.next_action == 'update-common' }} + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.PERSONAL_TOKEN }} + - name: gh checkout pr + env: + GH_TOKEN: ${{ secrets.PERSONAL_TOKEN }} + run: gh pr checkout ${{ github.event.issue.number }} --recurse-submodules + - run: git submodule update --remote --merge + - name: Commit Common + run: | + git add . + git config --local user.email "github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + git commit -m "chore: update common" + git push + + update-snapshot: + needs: check + runs-on: ubuntu-latest + if: ${{ needs.check.outputs.next_action == 'update-snapshot' }} + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.PERSONAL_TOKEN }} + - name: gh checkout pr + env: + GH_TOKEN: ${{ secrets.PERSONAL_TOKEN }} + run: gh pr checkout ${{ github.event.issue.number }} --recurse-submodules + - uses: actions/setup-node@v4 + with: + node-version: 18 + - run: npm install + - run: npm run test:update + - name: Commit Snapshot + run: | + git add . + git config --local user.email "github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + git commit -m "chore: update snapshot" + git push \ No newline at end of file