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