You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
299 lines
9.7 KiB
299 lines
9.7 KiB
name: CI
|
|
on:
|
|
pull_request:
|
|
branches: ['main']
|
|
paths:
|
|
- 'github/**'
|
|
- 'idl/**'
|
|
- 'frontend/**'
|
|
- 'common/**'
|
|
- 'rush.json'
|
|
# Allows you to run this workflow manually from the Actions tab
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
actions: read
|
|
|
|
jobs:
|
|
setup:
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- NodeVersion: 22.16.0
|
|
NodeVersionDisplayName: 22
|
|
OS: ubuntu-latest
|
|
name: Setup and Install Dependencies
|
|
runs-on: ${{ matrix.OS }}
|
|
outputs:
|
|
cache_file: ${{ steps.process-files.outputs.cache_file }}
|
|
matrix_node_version: ${{ matrix.NodeVersion }}
|
|
matrix_os: ${{ matrix.OS }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 1
|
|
|
|
- name: Get changed files
|
|
id: changed-files
|
|
uses: tj-actions/changed-files@v45
|
|
|
|
- name: Process changed files
|
|
id: process-files
|
|
run: |
|
|
# Get all change files
|
|
all_files="${{ steps.changed-files.outputs.all_changed_files }}"
|
|
|
|
# Filter out files in the common/changes directory
|
|
filtered_files=""
|
|
for file in $all_files; do
|
|
if [[ ! "$file" =~ ^common/changes/.* ]]; then
|
|
if [ -z "$filtered_files" ]; then
|
|
filtered_files="$file"
|
|
else
|
|
filtered_files="$filtered_files $file"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# Create cached files in JSON format
|
|
echo "[$( echo "$filtered_files" | sed 's/ /", "/g' | sed 's/^/"/' | sed 's/$/"/' )]" > changed-files-cache.json
|
|
|
|
# Output cache file path for subsequent steps
|
|
echo "cache_file=changed-files-cache.json" >> $GITHUB_OUTPUT
|
|
|
|
echo "过滤前文件数量: $(echo $all_files | wc -w)"
|
|
echo "过滤后文件数量: $(echo $filtered_files | wc -w)"
|
|
echo "已生成缓存文件: changed-files-cache.json"
|
|
|
|
- name: Config Git User
|
|
# should be turn to ci user
|
|
run: |
|
|
git config --local user.name "flow_bot"
|
|
git config --local user.email "flow_bot@bytedance.com"
|
|
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.NodeVersion }}
|
|
|
|
- name: Upload changed files cache
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: changed-files-cache
|
|
path: changed-files-cache.json
|
|
retention-days: 1
|
|
|
|
build:
|
|
needs: setup
|
|
runs-on: ${{ needs.setup.outputs.matrix_os }}
|
|
name: Increment Build
|
|
env:
|
|
BUILD_BRANCH: ${{ github.head_ref || github.ref_name }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 1
|
|
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ needs.setup.outputs.matrix_node_version }}
|
|
|
|
- name: Cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
common/temp/pnpm-local
|
|
common/temp/pnpm-store
|
|
common/temp/install-run
|
|
key: ${{ runner.os }}-rush-store-${{ hashFiles('common/config/subspaces/**/pnpm-lock.yaml') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-rush-store-main
|
|
${{ runner.os }}-rush-store
|
|
|
|
- name: Download changed files cache
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: changed-files-cache
|
|
|
|
- name: Install Dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libasound2-dev
|
|
node common/scripts/install-run-rush.js install --to tag:core
|
|
node common/scripts/install-run-rush.js update-autoinstaller --name plugins
|
|
node common/scripts/install-run-rush.js increment --action install -p "${{ needs.setup.outputs.cache_file }}"
|
|
|
|
- name: Increment Build
|
|
run: node common/scripts/install-run-rush.js increment --action build -p "${{ needs.setup.outputs.cache_file }}"
|
|
|
|
test:
|
|
needs: setup
|
|
runs-on: ${{ needs.setup.outputs.matrix_os }}
|
|
name: Increment Test Coverage
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 1
|
|
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ needs.setup.outputs.matrix_node_version }}
|
|
|
|
- name: Cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
common/temp/pnpm-local
|
|
common/temp/pnpm-store
|
|
common/temp/install-run
|
|
key: ${{ runner.os }}-rush-store-${{ hashFiles('common/config/subspaces/**/pnpm-lock.yaml') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-rush-store-main
|
|
${{ runner.os }}-rush-store
|
|
|
|
- name: Download changed files cache
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: changed-files-cache
|
|
|
|
- name: Install Dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libasound2-dev
|
|
node common/scripts/install-run-rush.js install --to tag:core
|
|
node common/scripts/install-run-rush.js update-autoinstaller --name plugins
|
|
node common/scripts/install-run-rush.js increment --action install -p "${{ needs.setup.outputs.cache_file }}"
|
|
|
|
- name: Increment Test:cov
|
|
run: node common/scripts/install-run-rush.js increment --action test:cov -p "${{ needs.setup.outputs.cache_file }}"
|
|
|
|
# TODO: should resolve later
|
|
# - name: Upload coverage reports
|
|
# uses: codecov/codecov-action@v4
|
|
# with:
|
|
# token: ${{ secrets.CODECOV_TOKEN }}
|
|
# fail_ci_if_error: true
|
|
# verbose: true
|
|
|
|
lint:
|
|
needs: setup
|
|
runs-on: ${{ needs.setup.outputs.matrix_os }}
|
|
name: Increment Lint
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 1
|
|
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ needs.setup.outputs.matrix_node_version }}
|
|
|
|
- name: Cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
common/temp/pnpm-local
|
|
common/temp/pnpm-store
|
|
common/temp/install-run
|
|
key: ${{ runner.os }}-rush-store-${{ hashFiles('common/config/subspaces/**/pnpm-lock.yaml') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-rush-store-main
|
|
${{ runner.os }}-rush-store
|
|
|
|
- name: Download changed files cache
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: changed-files-cache
|
|
|
|
- name: Install Dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libasound2-dev
|
|
node common/scripts/install-run-rush.js install --to tag:core
|
|
node common/scripts/install-run-rush.js update-autoinstaller --name plugins
|
|
node common/scripts/install-run-rush.js increment --action install -p "${{ needs.setup.outputs.cache_file }}"
|
|
|
|
- name: Increment Lint
|
|
run: node common/scripts/install-run-rush.js increment --action lint -p "${{ needs.setup.outputs.cache_file }}"
|
|
|
|
ts-check:
|
|
needs: setup
|
|
runs-on: ${{ needs.setup.outputs.matrix_os }}
|
|
name: Increment TS Check
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 1
|
|
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ needs.setup.outputs.matrix_node_version }}
|
|
|
|
- name: Cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
common/temp/pnpm-local
|
|
common/temp/pnpm-store
|
|
common/temp/install-run
|
|
key: ${{ runner.os }}-rush-store-${{ hashFiles('common/config/subspaces/**/pnpm-lock.yaml') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-rush-store-main
|
|
${{ runner.os }}-rush-store
|
|
|
|
- name: Download changed files cache
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: changed-files-cache
|
|
|
|
- name: Install Dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libasound2-dev
|
|
node common/scripts/install-run-rush.js install --to tag:core
|
|
node common/scripts/install-run-rush.js update-autoinstaller --name plugins
|
|
node common/scripts/install-run-rush.js increment --action install -p "${{ needs.setup.outputs.cache_file }}"
|
|
|
|
- name: Increment TS Check
|
|
run: node common/scripts/install-run-rush.js increment --action ts-check -p "${{ needs.setup.outputs.cache_file }}"
|
|
|
|
package-audit:
|
|
needs: setup
|
|
runs-on: ${{ needs.setup.outputs.matrix_os }}
|
|
name: Increment Package Audit
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 1
|
|
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ needs.setup.outputs.matrix_node_version }}
|
|
|
|
- name: Cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
common/temp/pnpm-local
|
|
common/temp/pnpm-store
|
|
common/temp/install-run
|
|
key: ${{ runner.os }}-rush-store-${{ hashFiles('common/config/subspaces/**/pnpm-lock.yaml') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-rush-store-main
|
|
${{ runner.os }}-rush-store
|
|
|
|
- name: Download changed files cache
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: changed-files-cache
|
|
|
|
- name: Install Dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libasound2-dev
|
|
node common/scripts/install-run-rush.js install --to tag:core
|
|
node common/scripts/install-run-rush.js update-autoinstaller --name plugins
|
|
node common/scripts/install-run-rush.js increment --action install -p "${{ needs.setup.outputs.cache_file }}"
|
|
|
|
- name: Increment Package Audit
|
|
run: node common/scripts/install-run-rush.js increment --action package-audit -p "${{ needs.setup.outputs.cache_file }}"
|
|
|