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

ci: add TDesign Component Repositories CI Test #2054

Merged
merged 19 commits into from
Feb 8, 2025
27 changes: 20 additions & 7 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
pull_request:
branches: [develop, main]
types: [opened, synchronize, reopened]

jobs:
check:
runs-on: ubuntu-latest
Expand All @@ -14,7 +14,7 @@ jobs:
run: |
log_emails=$(git log --pretty=format:"%ae %ce" -1) && if [[ ${log_emails} =~ '@tencent.com' ]];then echo $log_emails && echo "邮箱校验非法" && exit 2;else echo "邮箱校验通过";fi
shell: bash

test:
runs-on: ubuntu-latest
steps:
Expand All @@ -32,9 +32,22 @@ jobs:
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-

- run: npm install

- run: npm run lint
- run: npm run test

- run: npm run test

- name: Save pr id
run: echo ${{ github.event.number }} > pr-id.txt

- name: Upload pr id
uses: actions/upload-artifact@v4
with:
name: pr-id
path: pr-id.txt
retention-days: 1

modify-web:
runs-on: ubuntu-latest
Expand All @@ -48,7 +61,7 @@ jobs:
id: web-changed
with:
path: style/web

modify-mobile:
runs-on: ubuntu-latest
outputs:
Expand All @@ -60,7 +73,7 @@ jobs:
- uses: tj-actions/changed-files@v45
id: mobile-changed
with:
path: style/mobile
path: style/mobile

build-web:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -105,7 +118,7 @@ jobs:
name: _site
path: target-repo/_site.zip
retention-days: 5

build-mobile:
runs-on: ubuntu-latest
needs: modify-mobile
Expand Down Expand Up @@ -148,4 +161,4 @@ jobs:
with:
name: _site
path: target-repo/_site.zip
retention-days: 5
retention-days: 5
229 changes: 229 additions & 0 deletions .github/workflows/tdesign-component-repositories-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,229 @@
name: TDesign Component Repositories CI Test

on:
workflow_run:
workflows:
- MAIN_PULL_REQUEST
types:
- completed

jobs:
pr-context:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
outputs:
pr_id: ${{ steps.pr.outputs.id }}
steps:
- name: Download pr id
uses: dawidd6/action-download-artifact@v8
with:
workflow: ${{ github.event.workflow_run.workflow_id }}
run_id: ${{ github.event.workflow_run.id }}
name: pr-id

- name: Set pr id
id : pr
run: echo "id=$(cat pr-id.txt)" >> $GITHUB_OUTPUT

tdesign-vue:
if: github.event.workflow_run.conclusion == 'success'
needs: pr-context
runs-on: ubuntu-latest
steps:
- name: Checkout tdesign-vue
uses: actions/checkout@v4
with:
repository: Tencent/tdesign-vue

- name: Checkout tdesign-common
uses: actions/checkout@v4
with:
path: src/_common
ref: refs/pull/${{ needs.pr-context.outputs.pr_id }}/head

- uses: actions/setup-node@v4
with:
node-version: 18

- run: npm install
- run: npm run lint
- run: npm run test
- run: npm run build

tdesign-vue-next:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
needs: pr-context
steps:
- name: Checkout tdesign-vue-next
uses: actions/checkout@v4
with:
repository: Tencent/tdesign-vue-next

- name: Checkout tdesign-common
uses: actions/checkout@v4
with:
path: packages/common
ref: refs/pull/${{ needs.pr-context.outputs.pr_id }}/head

- uses: pnpm/action-setup@v4

- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'

- run: pnpm install --frozen-lockfile
- run: pnpm run lint
- run: pnpm run test
- run: pnpm run build

tdesign-react:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
needs: pr-context
steps:
- name: Checkout tdesign-react
uses: actions/checkout@v4
with:
repository: Tencent/tdesign-react

- name: Checkout tdesign-common
uses: actions/checkout@v4
with:
path: src/_common
ref: refs/pull/${{ needs.pr-context.outputs.pr_id }}/head

- uses: actions/setup-node@v4
with:
node-version: 18

- run: npm install
- run: npm run lint
- run: npm run test
- run: npm run build

tdesign-web-components:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
needs: pr-context
steps:
- name: Checkout tdesign-web-components
uses: actions/checkout@v4
with:
repository: TDesignOteam/tdesign-web-components

- name: Checkout tdesign-common
uses: actions/checkout@v4
with:
path: src/_common
ref: refs/pull/${{ needs.pr-context.outputs.pr_id }}/head

- uses: actions/setup-node@v4
with:
node-version: 18

- run: npm install
- run: npm run lint
- run: npm run test
- run: npm run build

tdesign-mobile-vue:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
needs: pr-context
steps:
- name: Checkout tdesign-mobile-vue
uses: actions/checkout@v4
with:
repository: Tencent/tdesign-mobile-vue

- name: Checkout tdesign-common
uses: actions/checkout@v4
with:
path: src/_common
ref: refs/pull/${{ needs.pr-context.outputs.pr_id }}/head

- uses: actions/setup-node@v4
with:
node-version: 18

- run: npm install
- run: npm run lint
- run: npm run test
- run: npm run build

tdesign-mobile-react:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
needs: pr-context
steps:
- name: Checkout tdesign-mobile-react
uses: actions/checkout@v4
with:
repository: Tencent/tdesign-mobile-react

- name: Checkout tdesign-common
uses: actions/checkout@v4
with:
path: src/_common
ref: refs/pull/${{ needs.pr-context.outputs.pr_id }}/head

- uses: actions/setup-node@v4
with:
node-version: 18

- run: npm install
- run: npm run lint
- run: npm run test
- run: npm run build

pr-comment:
if: always()
needs:
- tdesign-vue
- tdesign-vue-next
- tdesign-react
- tdesign-web-components
- tdesign-mobile-vue
- tdesign-mobile-react
runs-on: ubuntu-latest
steps:
- name: jobs report
id: report
uses: actions/github-script@v7
with:
script: |
const { data: { jobs } } = await github.rest.actions.listJobsForWorkflowRun({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.runId,
per_page: 100
})

const tdesign = jobs.filter(job => job.name.startsWith('tdesign-'))

const run_url = `${context.serverUrl}//${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`

const comment =`
# TDesign Component Repositories CI Test [Open](${run_url})
| Component | Status | Job |
| --------- | :----: | :--: |
${tdesign.map(job => {
const status = job.conclusion === 'success' ? '✅' : '❌';
return `| ${job.name} | ${status} | [Open](${job.html_url}) |`
console.log(job.name, process.env[job.name]);
}).join("\n")}

<!-- TDesign Component Repositories CI Test -->
`

core.setOutput('comment', comment);

- name: comment
uses: actions-cool/maintain-one-comment@v3
with:
token: ${{ secrets.TDESIGN_BOT_TOKEN }}
number: ${{needs.pr-context.outputs.pr_id}}
body: ${{ steps.report.outputs.comment }}
body-include: '<!-- TDesign Component Repositories CI Test -->'