300 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			300 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
| 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 }}"
 |