docs(frontend): use new doc styles (#11)
* docs: use new doc styles * docs: remove comment * docs: remove comment * docs: remove comment --------- Co-authored-by: tecvan <tecvan.fe@gmail.com>main
parent
d045dea008
commit
9ca1ae506f
@ -1,73 +0,0 @@ |
||||
name: "ci@backend pipeline" |
||||
|
||||
trigger: |
||||
change: |
||||
paths: |
||||
- "backend/**" |
||||
|
||||
jobs: |
||||
unit_test: |
||||
image: hub.byted.org/codebase/ci_go_1_24:latest |
||||
name: Unit Test |
||||
steps: |
||||
- id: mysql_scripts |
||||
name: mysql scripts |
||||
uses: actions/mysql-scripts@v1 |
||||
inputs: |
||||
db_name: opencoze |
||||
host: mysql |
||||
path: "docker/atlas/migrations/*.sql" |
||||
user: root |
||||
password: root |
||||
- name: Go Test |
||||
uses: actions/codecov |
||||
inputs: |
||||
driver: go |
||||
commands: |
||||
- modules=`find . -name "go.mod" -exec dirname {} \;` |
||||
- echo $modules |
||||
- list="" |
||||
- coverpkg="" |
||||
- if [[ ! -f "go.work" ]];then go work init;fi |
||||
- for module in $modules; do go work use $module; list=$module"/... "$list; coverpkg=$module"/...,"$coverpkg; done |
||||
- go work sync |
||||
- go test -coverprofile=coverage.out -gcflags="all=-l -N" -coverpkg=$coverpkg $list |
||||
config: |
||||
status: |
||||
project: |
||||
opencoze: |
||||
minimum_coverage: 0% |
||||
paths: |
||||
- "!tests" |
||||
- "!examples/**" |
||||
- "!*/examples/**" |
||||
- "!*/mock/**" |
||||
- "!*/model/**" |
||||
diff: |
||||
eino: |
||||
line_limit: 10 # 增量行数少于多少行时,默认置成功 |
||||
minimum_coverage: 0% |
||||
paths: |
||||
- "!tests" |
||||
- "!examples/**" |
||||
- "!*/examples/**" |
||||
- "!*/mock/**" |
||||
- "!*/model/**" |
||||
- name: Sonar |
||||
uses: actions/sonar@v1 |
||||
inputs: |
||||
coverage_path: /tmp/coverage.out |
||||
coverage_type: go |
||||
disable_quality_gates: true |
||||
exclusions_list: |
||||
- "!tests" |
||||
- "examples/**" |
||||
- "*/mock/**" |
||||
- "*/model/**" |
||||
language: go |
||||
services: |
||||
- id: mysql |
||||
image: hub.byted.org/ee/mysql:8.0 |
||||
envs: |
||||
MYSQL_ROOT_PASSWORD: root |
||||
MYSQL_DATABASE: opencoze |
@ -1,180 +0,0 @@ |
||||
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 |
@ -1,89 +0,0 @@ |
||||
name: CI@fe-tsc |
||||
trigger: |
||||
manual: |
||||
change: |
||||
# 临时支持 project-ide 项目需求,临时修改为如下格式 |
||||
# 后续需调整回 integration/** |
||||
types: [create, push, restore] |
||||
paths: |
||||
- "frontend/**" |
||||
notification: |
||||
when: failure |
||||
|
||||
jobs: |
||||
ts_check: &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' |
||||
RE2_DOWNLOAD_SKIP_PATH: '1' |
||||
RE2_DOWNLOAD_MIRROR: https://bnpm.bytedance.net/mirrors |
||||
MERGE_REQUEST_TITLE: ${{Event.Change.Title}} |
||||
TSESTREE_SINGLE_RUN: 'true' |
||||
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 |
||||
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: Prepare basic packages |
||||
commands: |
||||
- node common/scripts/install-run-rush.js pre-build -v |
||||
- name: Check TS Type |
||||
commands: |
||||
- node common/scripts/install-run-rush.js increment --action ts-check -p ${{Steps.RemoteInfo.Outputs.changed_files_path}} |
@ -1,184 +0,0 @@ |
||||
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}} |
@ -1,14 +0,0 @@ |
||||
#!/bin/bash |
||||
set -ex |
||||
|
||||
# 暂时只扫描 app-botstudio-main 项目的产物 |
||||
result=$(argus scm -c apps/bot/dist_sg/static -n obric/cloud/bot_studio_oversea -l) |
||||
|
||||
if echo "$result" | grep -q '::add-message level=error:::'; then |
||||
if [ "$CI" ]; then |
||||
echo '::add-message level=info::本地验证命令:`npm install -g @ies/argus-scan@0.30.37 && REGION=sg CUSTOM_VERSION=release rush build -o app-botstudio-main && argus scm -c apps/bot/dist_sg/static -n obric/cloud/bot_studio_oversea -l`' |
||||
fi |
||||
exit 1 |
||||
else |
||||
exit 0 |
||||
fi |
@ -1,16 +0,0 @@ |
||||
#!/bin/bash |
||||
set -ex |
||||
|
||||
SOURCE_BRANCH=${SOURCE_BRANCH} |
||||
TARGET_BRANCH=${targetBranch} |
||||
|
||||
if [[ $TARGET_BRANCH == "master" && !($SOURCE_BRANCH =~ ^release/ || $SOURCE_BRANCH =~ ^hotfix/ || $SOURCE_BRANCH =~ ^task/ || $SOURCE_BRANCH =~ ^fix/) ]]; then |
||||
# 检查$SOURCE_BRANCH是否以'release/'或'hotfix/'或'task/'或'fix/'开头 |
||||
LATEST_BRANCH="release/$(date -d '+8 hour' +%Y%m%d)" |
||||
CONCLUSION="{\"name\": \"Target Branch\", \"conclusion\": \"failed\", \"output\":{\"summary\":\"Error: Please don't merge to master directly, use [$LATEST_BRANCH](https://code.byted.org/obric/bot-studio-monorepo/commits/$LATEST_BRANCH) instead.\n You can contact [@fanwenjie.fe](https://code.byted.org/fanwenjie.fe) to skip this error.\" }}" |
||||
else |
||||
CONCLUSION="{\"name\": \"Target Branch\", \"conclusion\": \"success\", \"output\":{\"summary\":\"Good Pratice\" }}" |
||||
fi |
||||
|
||||
echo $CONCLUSION >>check-merge-target.log |
||||
echo "::update-check-run::check-merge-target.log" |
@ -1,55 +0,0 @@ |
||||
#!/bin/bash |
||||
set -ex |
||||
|
||||
# Your target branch |
||||
TARGET_BRANCH=$targetBranch |
||||
|
||||
if [[ ${SOURCE_BRANCH} =~ ^integration/ || ${SOURCE_BRANCH} =~ ^release/ ]]; then |
||||
# integration -> xxx or release/xxx -> master SKIP check-mr-size. |
||||
echo "::add-message level=info::SKIP check-mr-size" |
||||
exit 0 |
||||
fi |
||||
|
||||
# Specify the pattern you want to exclude, using *space* as the separator |
||||
EXCLUDE_PATTERNS=( |
||||
'**/pnpm-lock.yaml' |
||||
'packages/arch/bot-api/src/auto-generate/**' |
||||
'apps/bot-op/src/services/bam-auto-generate/**' |
||||
'apps/prompt-platform/src/services/auto-generate/**' |
||||
"**/lib/**" |
||||
"**/.*/**" |
||||
'**/__tests__/**' |
||||
'**/__test__/**' |
||||
"**/__mocks__/**" |
||||
"**/__mock__/**" |
||||
"**/*.test.*/**" |
||||
"**/*.spec.*/**" |
||||
"**/__snapshots__/**" |
||||
"**/*.snap" |
||||
'**/*.svg' |
||||
'ee/e2e/bot-studio/**' |
||||
'common/changes/**' |
||||
'apps/fornax/**' |
||||
"apps/api-builder/**" |
||||
"packages/api-builder/**" |
||||
) |
||||
|
||||
for pattern in "${EXCLUDE_PATTERNS[@]}"; do |
||||
EXCLUDE_STRING+=":(exclude)$pattern " |
||||
done |
||||
|
||||
# Count the number of files changed but exclude certain files and folders |
||||
file_changes=$(git diff --name-only "origin/$TARGET_BRANCH..." $EXCLUDE_STRING | wc -l) |
||||
|
||||
# Count the number of line changes but exclude certain files and folders |
||||
line_changes=$(git diff --shortstat "origin/$TARGET_BRANCH..." $EXCLUDE_STRING | awk '{print ($4>$6)?$4:$6}') |
||||
|
||||
# Check if number of changed files is greater than 100 or if number of line changes is greater than 2000 |
||||
if [ "$file_changes" -gt 100 ] || [ "$line_changes" -gt 2000 ]; then |
||||
CONCLUSION="{\"name\": \"MR Size\", \"conclusion\": \"failed\", \"output\":{\"summary\":\"Error: Too many changes. Number of changed files is **""$file_changes""**, number of changed lines is **""$line_changes""**.\n You can contact [@fanwenjie.fe](https://code.byted.org/fanwenjie.fe) to skip this error.\" }}" |
||||
else |
||||
CONCLUSION="{\"name\": \"MR Size\", \"conclusion\": \"success\", \"output\":{\"summary\":\"Good\" }}" |
||||
fi |
||||
|
||||
echo $CONCLUSION >>check-mr-size.log |
||||
echo "::update-check-run::check-mr-size.log" |
@ -1,14 +0,0 @@ |
||||
#!/bin/bash |
||||
set -ex |
||||
|
||||
PRE_COMMITS=$1 |
||||
|
||||
# 按 codebase 给出的口径,pre commits 超过 5 时容易导致 rebase 失败,因此主动给出警告,避免进入 CQ 后被弹出 |
||||
if [ $PRE_COMMITS -gt 5 ]; then |
||||
CONCLUSION="{\"name\": \"Pre Commits Check\", \"conclusion\": \"failed\", \"output\":{\"summary\":\"分支已落后目标分支较多,非常容易导致进入 CQ 后被弹出,请执行 rebase/merge 同步代码后重试。\" }}" |
||||
else |
||||
CONCLUSION="{\"name\": \"Pre Commits Check\", \"conclusion\": \"success\", \"output\":{\"summary\":\"good\" }}" |
||||
fi |
||||
|
||||
echo $CONCLUSION >> check-pre-commits.log |
||||
echo "::update-check-run::check-pre-commits.log" |
@ -1,54 +0,0 @@ |
||||
#!/bin/bash |
||||
set -ex |
||||
|
||||
basename=$(basename "$CHANGE_URL") |
||||
lastParam=$(echo "$basename" | cut -d'/' -f1) |
||||
|
||||
targetBranch="${targetBranch}" |
||||
sourceBranch="${SOURCE_BRANCH}" |
||||
mrTitle="${MR_TITLE}" |
||||
mrDescription="${MR_DESCRIPTION}" |
||||
|
||||
echo "::set-output name=mrId::$lastParam" # 输出 lastParam 的值 |
||||
|
||||
result=$(curl --location "https://code.byted.org/api/v4/projects/548801/merge_requests/$lastParam" \ |
||||
--header "Private-Token: $GITLAB_TOKEN") |
||||
|
||||
commits=$(curl --location "https://code.byted.org/api/v4/projects/548801/merge_requests/$lastParam/commits" \ |
||||
--header "Private-Token: $GITLAB_TOKEN") |
||||
|
||||
isSquash=$(echo "$result" | jq -r '.squash') # 使用jq提取isSquash的值 |
||||
|
||||
commitsCount=$(echo "$commits" | jq length) |
||||
|
||||
echo "::set-output name=squash::$isSquash" # 输出 isSquash 的值 |
||||
echo "::set-output name=commitsCount::$commitsCount" # 输出 commitsCount 的值 |
||||
|
||||
if [[ $isSquash == true ]]; then |
||||
# 勾选squash |
||||
|
||||
if [[ $sourceBranch == release/* && $targetBranch == master ]]; then |
||||
echo "::add-message level=error::**release 分支合入 master 时,不可开启 squash **" |
||||
exit 1 |
||||
fi |
||||
|
||||
if [[ $mrDescription == \[no-squash\]* ]]; then |
||||
echo "::add-message level=error::**当前 MR 勾选了 Squash 选项,但是描述中包含[no-squash]**" |
||||
exit 1 |
||||
fi |
||||
|
||||
else |
||||
# 没有勾选squash |
||||
|
||||
if [[ $mrDescription == \[no-squash\]* || |
||||
$commitsCount -le 1 || |
||||
$mrTitle == WIP:* || |
||||
$mrTitle == wip:* || |
||||
$sourceBranch == release/* ]]; then |
||||
exit 0 |
||||
fi |
||||
|
||||
echo "::add-message level=error::**当前 MR 应该勾选 Squash 选项**" |
||||
exit 1 |
||||
|
||||
fi |
@ -1,53 +0,0 @@ |
||||
const fs = require('fs/promises'); |
||||
const path = require('path'); |
||||
const crypto = require('crypto'); |
||||
|
||||
// node scripts/checksum-by-change.js /usr/changed-path.json
|
||||
// change-path 文件来自 ci
|
||||
const changedPath = process.argv[2]; |
||||
const readJson = async jsonFile => { |
||||
const content = await fs.readFile(jsonFile, 'utf-8'); |
||||
let _val = null; |
||||
try { |
||||
eval(`_val = ${content}`); |
||||
return _val; |
||||
} catch (e) { |
||||
console.error(`json parse failure: `, e); |
||||
} |
||||
}; |
||||
|
||||
const readChangedPackages = async changedPath => { |
||||
const [changedFiles, { projects }] = await Promise.all([ |
||||
readJson(changedPath), |
||||
readJson(path.resolve(__dirname, '../../rush.json')), |
||||
]); |
||||
const changedProjects = projects |
||||
.filter(project => { |
||||
const { projectFolder } = project; |
||||
const endsWithSlash = projectFolder.endsWith('/'); |
||||
const compareFolder = `${projectFolder}${endsWithSlash ? '' : '/'}`; |
||||
if (!changedFiles) { |
||||
// changed-path.json 内容可能为null
|
||||
return true; |
||||
} |
||||
const matched = changedFiles.find(file => file.startsWith(compareFolder)); |
||||
return !!matched; |
||||
}) |
||||
.map(({ packageName }) => packageName) |
||||
.sort((r1, r2) => r1.localeCompare(r2)); |
||||
return changedProjects; |
||||
}; |
||||
|
||||
async function main() { |
||||
if (!changedPath || changedPath.length <= 0) { |
||||
throw new Error(`Please pass the correct "changedPath" path`); |
||||
} |
||||
const changedPackages = await readChangedPackages(changedPath); |
||||
|
||||
const hash = crypto.createHash('md5'); |
||||
changedPackages.forEach(r => hash.update(r)); |
||||
const hashValue = hash.digest('hex'); |
||||
console.log(`::set-output name=hash::${hashValue}`); |
||||
} |
||||
|
||||
main(); |
Loading…
Reference in new issue