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}}
|