Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: update pr-comment-ci #4551

Merged
merged 2 commits into from
Sep 11, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
157 changes: 123 additions & 34 deletions .github/workflows/pr-comment-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ name: PR_COMMENT_CI
on:
issue_comment:
types: [created]
env:
HUSKY: '0'

jobs:
check:
Expand All @@ -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')) {
Expand All @@ -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,
Expand All @@ -67,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
Expand All @@ -103,32 +127,18 @@ 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

git status
git commit -am "chore: merge develop"

- 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
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

update-snapshot:
needs: check
Expand All @@ -139,15 +149,36 @@ 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: merge develop

- 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: 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
run: |
git status
Expand Down Expand Up @@ -199,8 +230,11 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: 18

- run: npm install

- run: npm run test:update

- name: Commit Snapshot
run: |
git status
Expand All @@ -210,11 +244,66 @@ 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

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: 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
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
Loading