gitlab 添加 CI CD
目录
gitlab 添加 CICD
什么是CICD
CI - 持续集成
- 开发人员的自动化流程
- 代码的新更改会定期构建、测试并合并到共享存储库中
- 可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题
CD - 持续交付
- 开发人员的更改会自动进行错误测试并上传到存储库(如 GitHub 或容器注册表),然后由运维团队将其部署到实时生产环境中
- 解决开发和运维团队之间可见性及沟通较差的问题
- 目的就是确保尽可能减少部署新代码时所需的工作量
CD - 持续部署
- 自动将开发人员的更改从存储库发布到生产环境,以供客户使用
- 解决因手动流程降低应用交付速度,从而使运维团队超负荷的问题
- 持续部署以持续交付的优势为根基,实现了管道后续阶段的自动化
![image-20210520230819462](/Users/zhangshihang/Library/Application Support/typora-user-images/image-20210520230819462.png)
配置步骤
只需要两步
添加.gitlab-ci.yml
- 复制下文到.gitlab-ci.yml
- 保存在gitlab repo的根路径下
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- echo "build success!"
test_job:
stage: test
script:
- echo "test success!"
dependencies:
- build_job
deploy_job:
stage: deploy
script:
- echo "deploy success!"
dependencies:
- test_job
配置runner
- Settings -> CI/CD -> Runners,右侧为共享的runner,左侧为私有runner
- 本质是添加运行脚本的机器
- 按照gitlab的提示,在机器上安装runner,并注册到repo即可
pipeline含义
组成
- stage
- job
- script
他们的层级关系是:
- pipeline 由几个 stages 组成
- stage 由几个 job 组成
- job 也就是运行一些 脚本
比如我们最简单的yaml文件:
- pipeline 由 build, test, deploy 三个 stage 组成
- 每个 stage 由一个job组成,job中的stage字段表明了属于哪个stage
- 每个 job 的script字段,可以是文件,可以直接写shell语句;我们直接打印 success
- 他们更加复杂的关系,由其他关键字定义
主要关键字
全局参数
- image:runner 以 docker 启动时的基础镜像
- before_script:所有job执行前的脚本
- after_script:所有job执行后的脚本
job参数
- only:可以执行job的branch 和 tag
- except:不可执行job的branch 和 tag
- tags:可以执行的runner
- artifacts:向后传递本job的产出
- dependencies:定义job间依赖关系