From dfa22fc8af1549cdfd86ff29f2db4e5d93701ad0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E4=BC=9F=E6=9D=B0?= <674416404@qq.com> Date: Tue, 10 Sep 2024 23:50:08 +0800 Subject: [PATCH 1/2] chore: update pr-comment-ci --- .github/workflows/pr-comment-ci.yml | 158 ++++++++++++++++++++++++---- 1 file changed, 138 insertions(+), 20 deletions(-) diff --git a/.github/workflows/pr-comment-ci.yml b/.github/workflows/pr-comment-ci.yml index 4660c26625..8f2f00f7b2 100644 --- a/.github/workflows/pr-comment-ci.yml +++ b/.github/workflows/pr-comment-ci.yml @@ -3,6 +3,8 @@ name: PR_COMMENT_CI on: issue_comment: types: [created] +env: + HUSKY: "0" jobs: check: @@ -13,29 +15,30 @@ jobs: steps: - uses: actions/checkout@v4 with: + repository: Tencent/tdesign sparse-checkout: | - .github/CODEOWNERS + .github/.pr-comment-ci-whitelist sparse-checkout-cone-mode: false - uses: actions/github-script@v7 id: get-action with: script: | const user = context.payload.comment.user.login - core.debug(`user: ${user}`) + core.info(`user: ${user}`) const fs = require('fs') - const CODEOWNERS = fs.readFileSync('.github/CODEOWNERS', 'utf8') - core.debug(`CODEOWNERS: ${CODEOWNERS}`) + const fs = require('fs'); + const whitelist = fs.readFileSync('.github/.pr-comment-ci-whitelist', 'utf8'); - let isReviewer = false; - CODEOWNERS.match(/@\w+/g).forEach((owner) => { - if (owner === `@${user}`) { - isReviewer = true + let isWhitelist = false; + whitelist.split('\n').forEach((owner) => { + if (owner === user) { + isWhitelist = true; } - }) + }); let next_action = '' - if (isReviewer) { + if (isWhitelist) { const body = context.payload.comment.body core.info(`body: ${body}`) if (body.startsWith('/update-common')) { @@ -44,6 +47,10 @@ jobs: if (body.startsWith('/update-snapshot')) { next_action='update-snapshot' } + if (body.startsWith('/update-coverage')) { + next_action='update-coverage' + } + if(next_action){ await github.rest.reactions.createForIssueComment({ owner: context.repo.owner, @@ -111,7 +118,11 @@ jobs: git status git commit -am "chore: merge develop" - - name: Commit common + - name: update common + run: | + git submodule update --remote --merge + + - name: commit common run: | git status working_tree_clean=$(git status | grep -c 'nothing to commit, working tree clean') || true @@ -124,11 +135,17 @@ jobs: - name: git push run: | git status - branch_ahead=$(git status | grep -c 'use "git push" to publish your local commits') || true - if [ "$branch_ahead" -eq "1" ]; then - git push - fi - git status + git push || true + + - name: delete comment + uses: actions/github-script@v7 + with: + script: | + await github.rest.issues.deleteComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: context.payload.comment.id + }) update-snapshot: needs: check @@ -139,15 +156,33 @@ jobs: with: fetch-depth: 0 token: ${{ secrets.PERSONAL_TOKEN }} + - name: gh checkout pr env: GH_TOKEN: ${{ secrets.PERSONAL_TOKEN }} run: gh pr checkout ${{ github.event.issue.number }} --recurse-submodules + + - name: bot commtent + id: bot-comment + uses: actions/github-script@v7 + with: + script: | + const url = `${context.serverUrl}//${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}` + const urlLink = `[Open](${url})` + const { data: comment } = await github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `⏳ 正在运行 快照更新。。。 CI: ${urlLink}` + }) + return comment.id + - name: merge develop run: | git config --local user.email "github-actions[bot]@users.noreply.github.com" git config --local user.name "github-actions[bot]" git merge develop --no-commit || true + - name: check conflicts run: | git status @@ -199,9 +234,12 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 18 + - run: npm install + - run: npm run test:update - - name: Commit Snapshot + + - name: commit snapshot run: | git status working_tree_clean=$(git status | grep -c 'nothing to commit, working tree clean') || true @@ -210,11 +248,91 @@ jobs: git commit -m "chore: update snapshot" fi git status + - name: git push run: | git status - branch_ahead=$(git status | grep -c 'use "git push" to publish your local commits') || true - if [ "$branch_ahead" -eq "1" ]; then - git push + git push || true + + - name: delete comment + uses: actions/github-script@v7 + with: + script: | + await github.rest.issues.deleteComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: context.payload.comment.id + }) + await github.rest.issues.deleteComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: `${{ steps.bot-comment.outputs.result }}` + }) + + update-coverage: + needs: check + runs-on: ubuntu-latest + if: ${{ needs.check.outputs.next_action == 'update-coverage' }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.PERSONAL_TOKEN }} + + - name: gh checkout pr + env: + GH_TOKEN: ${{ secrets.PERSONAL_TOKEN }} + run: gh pr checkout ${{ github.event.issue.number }} --recurse-submodules + + - name: bot commtent + id: bot-comment + uses: actions/github-script@v7 + with: + script: | + const url = `${context.serverUrl}//${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}` + const urlLink = `[Open](${url})` + const { data: comment } = await github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `⏳ 正在运行 coverage badge 更新。。。 CI: ${urlLink}` + }) + return comment.id + + - uses: actions/setup-node@v4 + with: + node-version: 18 + + - run: npm install + + - run: npm run generate:coverage-badge + + - name: commit coverage badge + run: | + git status + working_tree_clean=$(git status | grep -c 'nothing to commit, working tree clean') || true + if [ "$working_tree_clean" -eq "0" ]; then + git add . + git commit -m "chore: update coverage badge" fi git status + + - name: git push + run: | + git status + git push || true + + - name: delete comment + uses: actions/github-script@v7 + with: + script: | + await github.rest.issues.deleteComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: context.payload.comment.id + }) + await github.rest.issues.deleteComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: `${{ steps.bot-comment.outputs.result }}` + }) From e9de7fc2a92fd5f3ea4df9ebaea56c73a75c4169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E4=BC=9F=E6=9D=B0?= <674416404@qq.com> Date: Wed, 11 Sep 2024 13:10:17 +0800 Subject: [PATCH 2/2] chore: update pr-comment-ci --- .github/workflows/pr-comment-ci.yml | 101 ++++++++++------------------ 1 file changed, 36 insertions(+), 65 deletions(-) diff --git a/.github/workflows/pr-comment-ci.yml b/.github/workflows/pr-comment-ci.yml index 8f2f00f7b2..88cb71c0d6 100644 --- a/.github/workflows/pr-comment-ci.yml +++ b/.github/workflows/pr-comment-ci.yml @@ -4,7 +4,7 @@ on: issue_comment: types: [created] env: - HUSKY: "0" + HUSKY: '0' jobs: check: @@ -19,6 +19,7 @@ jobs: sparse-checkout: | .github/.pr-comment-ci-whitelist sparse-checkout-cone-mode: false + - uses: actions/github-script@v7 id: get-action with: @@ -26,7 +27,6 @@ jobs: const user = context.payload.comment.user.login core.info(`user: ${user}`) - const fs = require('fs') const fs = require('fs'); const whitelist = fs.readFileSync('.github/.pr-comment-ci-whitelist', 'utf8'); @@ -50,7 +50,7 @@ jobs: if (body.startsWith('/update-coverage')) { next_action='update-coverage' } - + if(next_action){ await github.rest.reactions.createForIssueComment({ owner: context.repo.owner, @@ -74,16 +74,33 @@ jobs: with: fetch-depth: 0 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: gh pr checkout ${{ github.event.issue.number }} - - name: merge develop + - name: git config run: | git config --local user.email "github-actions[bot]@users.noreply.github.com" git config --local user.name "github-actions[bot]" + + - name: submodule init and sync remote + run: | + git submodule update --init --remote + + - name: Commit common + run: | + git status + working_tree_clean=$(git status | grep -c 'nothing to commit, working tree clean') || true + if [ "$working_tree_clean" -eq "0" ]; then + git add . + git commit -m "chore: update common" + fi + git status + + - name: merge develop + run: | git merge develop --no-commit || true - name: check conflicts @@ -110,7 +127,7 @@ jobs: fi if [ "$common_conflict" -eq "1" ];then - git checkout --theirs src/_common + git checkout --ours src/_common git add src/_common echo "resolve conflict _common" fi @@ -118,34 +135,10 @@ jobs: git status git commit -am "chore: merge develop" - - name: update common - run: | - git submodule update --remote --merge - - - name: commit common - run: | - git status - working_tree_clean=$(git status | grep -c 'nothing to commit, working tree clean') || true - if [ "$working_tree_clean" -eq "0" ]; then - git add . - git commit -m "chore: update common" - fi - git status - - name: git push run: | git status git push || true - - - name: delete comment - uses: actions/github-script@v7 - with: - script: | - await github.rest.issues.deleteComment({ - owner: context.repo.owner, - repo: context.repo.repo, - comment_id: context.payload.comment.id - }) update-snapshot: needs: check @@ -173,14 +166,17 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - body: `⏳ 正在运行 快照更新。。。 CI: ${urlLink}` + body: `⏳ 正在运行快照更新。。。 CI: ${urlLink}` }) return comment.id - - name: merge develop + - name: git config run: | git config --local user.email "github-actions[bot]@users.noreply.github.com" git config --local user.name "github-actions[bot]" + + - name: merge develop + run: | git merge develop --no-commit || true - name: check conflicts @@ -239,7 +235,7 @@ jobs: - run: npm run test:update - - name: commit snapshot + - name: Commit Snapshot run: | git status working_tree_clean=$(git status | grep -c 'nothing to commit, working tree clean') || true @@ -248,27 +244,12 @@ jobs: git commit -m "chore: update snapshot" fi git status - + - name: git push run: | git status git push || true - - name: delete comment - uses: actions/github-script@v7 - with: - script: | - await github.rest.issues.deleteComment({ - owner: context.repo.owner, - repo: context.repo.repo, - comment_id: context.payload.comment.id - }) - await github.rest.issues.deleteComment({ - owner: context.repo.owner, - repo: context.repo.repo, - comment_id: `${{ steps.bot-comment.outputs.result }}` - }) - update-coverage: needs: check runs-on: ubuntu-latest @@ -284,6 +265,11 @@ jobs: GH_TOKEN: ${{ secrets.PERSONAL_TOKEN }} run: gh pr checkout ${{ github.event.issue.number }} --recurse-submodules + - name: git config + run: | + git config --local user.email "github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + - name: bot commtent id: bot-comment uses: actions/github-script@v7 @@ -321,18 +307,3 @@ jobs: run: | git status git push || true - - - name: delete comment - uses: actions/github-script@v7 - with: - script: | - await github.rest.issues.deleteComment({ - owner: context.repo.owner, - repo: context.repo.repo, - comment_id: context.payload.comment.id - }) - await github.rest.issues.deleteComment({ - owner: context.repo.owner, - repo: context.repo.repo, - comment_id: `${{ steps.bot-comment.outputs.result }}` - })