185 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			185 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
| name: CI@fe
 | ||
| trigger:
 | ||
|   manual:
 | ||
|   change:
 | ||
|     source-branches: ['!release/**', '!task/**']
 | ||
|     types: [create, push, restore]
 | ||
|     paths:
 | ||
|       - "frontend/**"
 | ||
|     notification:
 | ||
|       when: failure
 | ||
| 
 | ||
| jobs:
 | ||
|   lint: &base_job
 | ||
|     runs-on:
 | ||
|       env: online
 | ||
|     image: hub.byted.org/base/bot_monorepo_ci_env:ae543e9bbc6d8155cffbd8f5ed27fb73
 | ||
|     # 从最近的 CI 执行记录看,install 步骤有概率会等待超时
 | ||
|     # 目前已 oncall,这里先设置一个超时时间,避免阻塞
 | ||
|     timeout: 30
 | ||
|     if: ${{ !Event.Change.IsPreSubmit }}
 | ||
|     envs:
 | ||
|       targetBranch: ${{Event.Change.Target.Branch}}
 | ||
|       RUSH_BUILD_CACHE_WRITE_ALLOWED: ${{RUSH_BUILD_CACHE_WRITE_ALLOWED}}
 | ||
|       RUSH_BUILD_CACHE_ENABLED: ${{RUSH_BUILD_CACHE_ENABLED}}
 | ||
|       RUSH_BUILD_CACHE_CREDENTIAL: ${{RUSH_BUILD_CACHE_CREDENTIAL}}
 | ||
|       ACCESS_TOKEN: ${{CI_BOT_ACCESS_TOKEN}}
 | ||
|       CI: 'true'
 | ||
|       RUN_BYTEST_COV: 'false'
 | ||
|       PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 'true'
 | ||
|       CYPRESS_INSTALL_BINARY: '0'
 | ||
|       TAIKO_SKIP_CHROMIUM_DOWNLOAD: '0'
 | ||
|       BUILD_BRANCH: ${{Event.Change.Source.Branch}}
 | ||
|       RE2_DOWNLOAD_SKIP_PATH: '1'
 | ||
|       MERGE_REQUEST_TITLE: ${{Event.Change.Title}}
 | ||
|       TSESTREE_SINGLE_RUN: 'true'
 | ||
|     caches:
 | ||
|       - backend: ebs
 | ||
|         key: bot-studio-monorepo-ci-v2-lint
 | ||
|         size: 256
 | ||
|     steps:
 | ||
|       - &checkout_step
 | ||
|         name: Checkout
 | ||
|         uses: actions/checkout
 | ||
|         inputs:
 | ||
|           submodules: true
 | ||
|           depth: 1
 | ||
| 
 | ||
|       - &proxy_step
 | ||
|         name: SetupProxy
 | ||
|         commands:
 | ||
|           - bash .codebase/scripts/env.sh
 | ||
| 
 | ||
|       - &remote_info_step
 | ||
|         id: RemoteInfo
 | ||
|         uses: 'actions/mr-remote-info'
 | ||
|         inputs:
 | ||
|           info_list: ['behind_commits', 'changed_files', 'changed_files_path']
 | ||
| 
 | ||
|       - &cache_step
 | ||
|         id: Cache
 | ||
|         uses: actions/cache
 | ||
|         inputs:
 | ||
|           key: flow-monorepo-${{Event.Change.Source.Branch}}
 | ||
|           paths:
 | ||
|             - common/temp/pnpm-store
 | ||
|             - packages/arch/idl/src/auto-generated
 | ||
|           restore_keys:
 | ||
|             - flow-monorepo-${{Event.Change.Source.Branch}}
 | ||
|             - flow-monorepo-store-master
 | ||
| 
 | ||
|       - &init_env_step
 | ||
|         id: InitEnv
 | ||
|         name: Initialization
 | ||
|         commands:
 | ||
|           - printenv
 | ||
|           - git config user.name ci_flow
 | ||
|           - git config user.email ci_flow@bytedance.com
 | ||
|           - npm config set registry=https://registry.npmjs.org
 | ||
|           - pnpm config set network-concurrency 32
 | ||
|           - echo "$(<${{Steps.RemoteInfo.Outputs.changed_files_path}})"
 | ||
|           - echo "::set-output name=ShouldRunBuild::${{ Event.Change.IsPreSubmit || int(Steps.RemoteInfo.Outputs.behind_commits) <= 6 }}"
 | ||
| 
 | ||
|       - &install_deps_step
 | ||
|         name: Install dependencies
 | ||
|         commands:
 | ||
|           - npx why-is-node-running@v2.x common/scripts/install-run-rush.js increment --action install -p ${{Steps.RemoteInfo.Outputs.changed_files_path}}
 | ||
| 
 | ||
|       - name: Check Lint
 | ||
|         commands:
 | ||
|           - node common/scripts/install-run-rush.js increment --action lint -p ${{Steps.RemoteInfo.Outputs.changed_files_path}}
 | ||
| 
 | ||
|   style_check:
 | ||
|     <<: *base_job
 | ||
|     caches:
 | ||
|       - backend: ebs
 | ||
|         key: bot-studio-monorepo-ci-v2-style-check
 | ||
|         size: 256
 | ||
|     name: Check Stylelint
 | ||
|     steps:
 | ||
|       - *checkout_step
 | ||
|       - *proxy_step
 | ||
|       - *remote_info_step
 | ||
|       - *cache_step
 | ||
|       - *init_env_step
 | ||
|       - *install_deps_step
 | ||
|       - name: Check Stylelint
 | ||
|         commands:
 | ||
|           - node common/scripts/install-run-rush.js increment --action style -p ${{Steps.RemoteInfo.Outputs.changed_files_path}}
 | ||
| 
 | ||
|   build:
 | ||
|     <<: *base_job
 | ||
|     caches:
 | ||
|       - backend: ebs
 | ||
|         key: bot-studio-monorepo-ci-v2-build
 | ||
|         size: 256
 | ||
|     name: Build
 | ||
|     timeout: 20
 | ||
|     steps:
 | ||
|       - *checkout_step
 | ||
|       - *proxy_step
 | ||
|       - *remote_info_step
 | ||
|       - *cache_step
 | ||
|       - *init_env_step
 | ||
|       - *install_deps_step
 | ||
|       - name: Build
 | ||
|         id: build
 | ||
|         if: ${{ Steps.InitEnv.Outputs.ShouldRunBuild }}
 | ||
|         commands:
 | ||
|           - node common/scripts/install-run-rush.js increment --action build -p ${{Steps.RemoteInfo.Outputs.changed_files_path}}
 | ||
| 
 | ||
|   test:
 | ||
|     <<: *base_job
 | ||
|     caches:
 | ||
|       - backend: ebs
 | ||
|         key: bot-studio-monorepo-ci-v2-test
 | ||
|         size: 256
 | ||
|     name: Test Coverage
 | ||
|     services:
 | ||
|       # 下面启动一个mysql和mongo服务,主要用于coze.hub.core相关服务的集成测试
 | ||
|       # id需要保持跟代码中连接的host一致
 | ||
|       - id: hub_mysql
 | ||
|         image: hub.byted.org/ee/mysql:5.7
 | ||
|         envs:
 | ||
|           MYSQL_ROOT_PASSWORD: test
 | ||
|           MYSQL_DATABASE: coze_hub
 | ||
|           MYSQL_USER: test
 | ||
|           MYSQL_PASSWORD: test
 | ||
|           MYSQL_TCP_PORT: 3306
 | ||
|       - id: hub_mongo
 | ||
|         image: hub.byted.org/ee/mongo:4.0.24
 | ||
|         commands:
 | ||
|           - mongod --replSet rs0
 | ||
|       - id: mongo-init
 | ||
|         image: hub.byted.org/ee/mongo:4.0.24
 | ||
|         commands:
 | ||
|           - sleep 10s
 | ||
|           - mongo mongodb://127.0.0.1:27017 --eval 'rs.initiate()'
 | ||
|     steps:
 | ||
|       - *checkout_step
 | ||
|       - *proxy_step
 | ||
|       - *remote_info_step
 | ||
|       - *cache_step
 | ||
|       - *init_env_step
 | ||
|       - *install_deps_step
 | ||
|       - name: wait mongo ready
 | ||
|         uses: actions/mongodb-scripts
 | ||
|         inputs:
 | ||
|           host: 127.0.0.1
 | ||
|           port: 27017
 | ||
|       - name: wait mysql ready
 | ||
|         uses: actions/mysql-scripts
 | ||
|         inputs:
 | ||
|           host: hub_mysql
 | ||
|           user: test
 | ||
|           password: test
 | ||
|         commands:
 | ||
|           - mysql -u test -ptest -h hub_mysql -P 3306 -e 'show databases;'
 | ||
|       # 服务发现
 | ||
|       - id: consul
 | ||
|         uses: actions/setup-consul
 | ||
|       - name: Test Coverage
 | ||
|         commands:
 | ||
|           - git fetch --filter=blob:none --unshallow -q
 | ||
|           - node common/scripts/install-run-rush.js increment --action test:cov -p ${{Steps.RemoteInfo.Outputs.changed_files_path}}
 |