coze-studio/.codebase/pipelines/ci@fe.yml

185 lines
5.6 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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