Skip to content

chore(deps): update dependency @rslib/core to v0.2.0 (#4264) #409

chore(deps): update dependency @rslib/core to v0.2.0 (#4264)

chore(deps): update dependency @rslib/core to v0.2.0 (#4264) #409

Workflow file for this run

name: Ecosystem CI
on:
push:
branches: [main]
workflow_dispatch:
inputs:
branch:
description: 'The branch of the Ecosystem CI run'
required: true
default: 'main'
jobs:
ecosystem_ci_notify:
name: Run Ecosystem CI With Notify
runs-on: ubuntu-latest
if: github.repository == 'web-infra-dev/rsbuild' && github.event_name != 'workflow_dispatch' && !startsWith(github.event.head_commit.message, 'docs')
steps:
- name: Run Ecosystem CI with notify
id: eco_ci
continue-on-error: true
uses: convictional/trigger-workflow-and-wait@v1.6.5
with:
owner: "rspack-contrib"
repo: "rsbuild-ecosystem-ci"
workflow_file_name: "ecosystem-ci-from-commit.yml"
github_token: ${{ secrets.REPO_RSBUILD_ECO_CI_GITHUB_TOKEN }}
ref: "main"
client_payload: '{"commitSHA":"${{ github.sha }}","updateComment":true,"repo":"web-infra-dev/rsbuild","suite":"-","suiteRefType":"precoded","suiteRef":"precoded"}'
- if: steps.eco_ci.outcome == 'failure'
uses: actions/checkout@v4.2.2
- if: steps.eco_ci.outcome == 'failure'
uses: actions/setup-node@v4.1.0
with:
node-version: 20
- name: Send Failure Notification
if: steps.eco_ci.outcome == 'failure'
shell: bash
run: ./scripts/alert/lark.js
env:
TITLE: Rsbuild Ecosystem CI failed
DESCRIPTION: |
commitID: [${{github.sha}}](${{github.server_url}}/${{github.repository}}/commit/${{github.sha}})
URL: ${{github.server_url}}/${{github.repository}}/actions/runs/${{github.run_id}}
LARK_WEBHOOK_URL: ${{ secrets.LARK_WEBHOOK_URL }}
ecosystem_ci:
name: Run Ecosystem CI
runs-on: ubuntu-latest
if: github.repository == 'web-infra-dev/rsbuild' && github.event_name == 'workflow_dispatch'
steps:
- id: get-pr-number
uses: actions/github-script@v7
name: Get PR Number
with:
script: |
const { data: prs } = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
})
const pr = prs.find(pr => pr.head.ref === context.payload.inputs.branch);
if(pr) {
console.log(`Get PR info: ${pr.url}`)
return {
num: pr.number,
branchName: pr.head.ref,
repo: pr.head.repo.full_name
}
} else {
console.log(`can't find PR for branch: ${context.payload.inputs.branch}`)
}
- id: create-comment
name: Create Comment
uses: actions/github-script@v6
if: steps.get-pr-number.outputs.result
with:
result-encoding: string
script: |
const url = `${context.serverUrl}//${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`
const urlLink = `[Open](${url})`
const prData = ${{ steps.get-pr-number.outputs.result }}
const { data: comment } = await github.rest.issues.createComment({
issue_number: prData.num,
owner: 'web-infra-dev',
repo: 'rsbuild',
body: `⏳ Triggered ecosystem CI: ${urlLink}`
})
return comment.id
- name: Run Ecosystem CI
id: eco_ci
uses: convictional/trigger-workflow-and-wait@v1.6.5
continue-on-error: true
with:
owner: "rspack-contrib"
repo: "rsbuild-ecosystem-ci"
workflow_file_name: "ecosystem-ci-selected.yml"
github_token: ${{ secrets.REPO_RSBUILD_ECO_CI_GITHUB_TOKEN }}
ref: "main"
client_payload: '{"ref":"${{ github.event.inputs.branch }}","repo":"web-infra-dev/rsbuild","suite":"-","suiteRefType":"precoded","suiteRef":"precoded"}'
- id: get-ci-result
uses: actions/github-script@v7
name: Get CI Result
env:
CI_OUTPUT: ${{ toJson(steps.eco_ci.outputs) }}
with:
script: |
const owner = "rspack-contrib"
const repo = "rsbuild-ecosystem-ci"
const runId = JSON.parse(process.env.CI_OUTPUT).workflow_id
const { data: { jobs } = {} } = await github.rest.actions.listJobsForWorkflowRun({
owner,
repo,
run_id: runId,
})
if (!jobs) {
return 'cannot find CI result'
}
let result = jobs
.filter(job => job.name.startsWith('execute-all '))
.map(job => {
const suite = job.name.replace(/^execute-all \(([^)]+)\)$/, "$1")
return { suite, conclusion: job.conclusion, link: job.html_url }
})
const url = `https://github.com/${owner}/${repo}/actions/runs/${runId}`
const urlLink = `[Open](${url})`
const conclusionEmoji = {
success: ":white_check_mark:",
failure: ":x:",
cancelled: ":stop_button:"
}
const body = `
📝 Ran ecosystem CI: ${urlLink}
| suite | result |
|-------|--------|
${result.map(r => `| [${r.suite}](${r.link}) | ${conclusionEmoji[r.conclusion]} ${r.conclusion} |`).join("\n")}
`
console.log(body);
return body;
- id: update-comment
uses: actions/github-script@v7
if: steps.get-pr-number.outputs.result
name: Update Comment
with:
script: |
await github.rest.issues.updateComment({
owner: 'web-infra-dev',
repo: 'rsbuild',
comment_id: ${{ steps.create-comment.outputs.result }},
body: ${{ steps.get-ci-result.outputs.result }}
})