ci 通用组成
我们 CI 逻辑在底层其实就是一个钩子函数触发跑一段固定脚本,不管以何种方式执行 CI,我们的脚本都需要有特定的服务器、虚拟机或容器来提供运行环境。
- 可以使用自带的预置 Runners,也可以手动搭建(Github Actions)
- 可以使用公司内部搭建的共享 Runners,也可以手动搭建(Gitlab CI)
- 解放双手,用户不需要考虑 Runners(Codebase CI)
对比
- 内部仓库除了使用 Codebase CI ,也可以使用 Gitlab CI,不过自己搭建 Runner 的时间成本和学习成本还是比较高的,没有特殊需求的话还是建议使用内部共享 Runner。
- Github 开源项目使用 Github Actions 是非常方便的,也不需要再去安装其他的 CI app,Actions 用起来体验很好。
场景
使用gitlab ci
实现单包自动发包和多包自动发包
差异和迁移
如何在 gitlab ci 中使用 github actions?
name: NPM Publish
trigger:
change:
notification:
when: [ success, failure ]
to: [ "jidanna"]
branches: [dev]
# 创建 mr 的时候进行发版本
types: [create]
jobs:
build:
image: hub.byted.org/codebase/ci_nodejs_16
envs:
NPM_AUTH_TOKEN: ${{NPM_AUTH_TOKEN}}
GITHUB_TOKEN: ${{GITHUB_TOKEN}}
GITLAB_URL: ${{GITLAB_URL}}
steps:
- name: Publish
commands:
- git remote set-url origin https://jidanna:${{GITHUB_TOKEN}}@code.byted.org/jidanna/mono-testing
- npm config set registry https://bnpm.byted.org
# NPM_TOKEN 进行注入,用于发版
- echo "//bnpm.byted.org/:_authToken=${{NPM_AUTH_TOKEN}}" >> ~/.npmrc
# update
- node common/scripts/install-run-rush.js update
# rush 安装
# - node common/scripts/install-run-rush.js install
# 检查 change 是否存在
- node common/scripts/install-run-rush.js change -v
# 发布正式包
- git config --global user.name "jidanna"
- git config --global user.email "jidanna@bytedance.com"
- node common/scripts/install-run-rush.js version --bump --ignore-git-hooks --target-branch dev
# 提交一个 commit 到 dev
- NPM_AUTH_TOKEN=${{NPM_AUTH_TOKEN}} node common/scripts/install-run-rush.js publish --apply --publish --include-all --add-commit-details --set-access-level public --target-branch dev