181 lines
5.3 KiB
YAML
181 lines
5.3 KiB
YAML
name: CI@fe-master
|
||
trigger:
|
||
cron:
|
||
push:
|
||
branches: []
|
||
paths:
|
||
- "frontend/**"
|
||
types: [branch]
|
||
notification:
|
||
when: failure
|
||
# 搜索群名:Bot Studio Monorepo CI 报警群
|
||
to: ['7350862409475031044']
|
||
manual:
|
||
notification:
|
||
when: failure
|
||
|
||
jobs:
|
||
lint: &base_job
|
||
runs-on:
|
||
env: online
|
||
name: Lint
|
||
image: hub.byted.org/base/bot_monorepo_ci_env:ae543e9bbc6d8155cffbd8f5ed27fb73
|
||
# 从最近的 CI 执行记录看,install 步骤有概率会等待超时
|
||
# 目前已 oncall,这里先设置一个超时时间,避免阻塞
|
||
timeout: 30
|
||
envs:
|
||
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' # disable Jupiter default behavior of invoke bytestcov
|
||
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 'true'
|
||
CYPRESS_INSTALL_BINARY: '0'
|
||
TAIKO_SKIP_CHROMIUM_DOWNLOAD: '0'
|
||
RE2_DOWNLOAD_SKIP_PATH: '1'
|
||
RE2_DOWNLOAD_MIRROR: https://bnpm.bytedance.net/mirrors
|
||
# https://typescript-eslint.io/packages/parser/#allowautomaticsingleruninference
|
||
TSESTREE_SINGLE_RUN: 'true'
|
||
# 使用云盘缓存:https://bytedance.larkoffice.com/wiki/A60lwgolSinteMkOz71cFPvFneg
|
||
# TODO:不同job的缓存key暂时使用同一个,后续可以考虑区分
|
||
caches:
|
||
- backend: ebs
|
||
key: bot-studio-monorepo-master-v2-lint
|
||
size: 256
|
||
steps:
|
||
- &checkout_step
|
||
id: Checkout
|
||
uses: actions/checkout
|
||
inputs:
|
||
depth: 1
|
||
- &proxy_step
|
||
name: SetupProxy
|
||
commands:
|
||
- bash .codebase/scripts/env.sh
|
||
- &init_env_step
|
||
name: Initialization
|
||
commands:
|
||
- printenv
|
||
- git config user.name ci_flow
|
||
- git config user.email ci_flow@bytedance.com
|
||
- &install_deps_step
|
||
name: Install dependencies
|
||
commands:
|
||
- node common/scripts/install-run-rush.js install
|
||
# 暂时不启用,因为eslintignore文件移除会导致解析报错,后期接入可考虑动态读取eslint ignore配置
|
||
# - name: PreLint
|
||
# parallel-with-next-step: true
|
||
# commands:
|
||
# - npx oxlint@latest -A all .
|
||
- name: Lint
|
||
commands:
|
||
- NODE_OPTIONS="--max-old-space-size=4096" node common/scripts/install-run-rush.js lint
|
||
|
||
ts_check:
|
||
<<: *base_job
|
||
name: Check TS Type
|
||
timeout: 30
|
||
caches:
|
||
- backend: ebs
|
||
key: bot-studio-monorepo-master-v2-ts-check
|
||
size: 256
|
||
steps:
|
||
- *checkout_step
|
||
- *proxy_step
|
||
- *init_env_step
|
||
- *install_deps_step
|
||
- name: Check TS Type
|
||
commands:
|
||
- node common/scripts/install-run-rush.js ts-check -v
|
||
|
||
build:
|
||
<<: *base_job
|
||
name: Build
|
||
caches:
|
||
- backend: ebs
|
||
key: bot-studio-monorepo-master-v2-build
|
||
size: 256
|
||
steps:
|
||
- *checkout_step
|
||
- *proxy_step
|
||
- *init_env_step
|
||
- *install_deps_step
|
||
- name: Build
|
||
commands:
|
||
- CUSTOM_VERSION=release REGION=sg BUILD_BRANCH=test node common/scripts/install-run-rush.js build -v
|
||
|
||
test:
|
||
<<: *base_job
|
||
caches:
|
||
- backend: ebs
|
||
key: bot-studio-monorepo-master-v2-test
|
||
size: 256
|
||
name: Test
|
||
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
|
||
- *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
|
||
id: test
|
||
commands:
|
||
- node common/scripts/install-run-rush.js test:cov -v
|
||
# https://bytedance.feishu.cn/wiki/wikcn9Z4azEdfJalVPKcOs9vxsR
|
||
|
||
security_scan:
|
||
<<: *base_job
|
||
name: Security Scan
|
||
caches:
|
||
- backend: ebs
|
||
key: bot-studio-monorepo-master-v2-scan
|
||
size: 256
|
||
steps:
|
||
- *checkout_step
|
||
- *proxy_step
|
||
- *init_env_step
|
||
- *install_deps_step
|
||
- name: build
|
||
commands:
|
||
- CUSTOM_VERSION=release REGION=sg node common/scripts/install-run-rush.js build -o app-botstudio-main -v
|
||
- id: Argus
|
||
commands:
|
||
- npm i @ies/argus-scan@0.30.37 -g
|
||
- bash .codebase/scripts/argus-scan.sh
|