一、gitlab配置流水线
在项目中设置CI/CD
这个操作会在项目中添加一个名称为".gitlab-ci.yaml"的文件。在文件中编写流水线
二、常用参数
1.before_script
在所有任务之前执行的任务
2.variables
设置.gitlab-ci.yaml文件中使用的变量
3.stages
定义具体阶段执行的顺序
4.stage
定义具体的阶段
5.script
具体要执行的任务语句
6.when
什么时候开始执行任务
on_success:只有前面stages的所有工作成功时才执行。 这是默认值
manual:手动执行
7.only
在那个分支上执行任务
8.tags
指定调用哪个runner来执行任务
三、实例
before_script:
- echo "开始之前的输出"
variables:
ip: 1.1.1.1
stages:
- install
- deploy
步骤1:
stage: deploy
script:
- echo "----$ip-----"
only:
- master
tags:
- build_test
步骤2:
stage: install
script:
- echo "----这是步骤2------"
only:
- master
tags:
- build_test
1.查看流水线
只要我们在master上有新提交,就会触发流水线
2.查看具体任务
这里可以看到:
这里的步骤2和步骤1是和文件中定义的编写顺序是相反的。所以这说明stages字段定义了stage的执行顺序。
3.查看执行过程
四、实例2
before_script:
- echo "开始之前的输出"
variables:
ip: 1.1.1.1
stages:
- 安装
- 部署
步骤1:
stage: 安装
script:
- echo "----$ip-----"
only:
- master
tags:
- build_test
步骤2:
stage: 部署
script:
- echo "----这是步骤2------"
only:
- master
tags:
- build_test
when: manual #这里我们添加了手动触发
此时我们发现在最新的流水线中,步骤2不再是成功状态。这中状态说明需要手动执行任务
手动触发这个任务
执行成功
再返回查看状态,已经变成了成功状态
五、多分支CI/CD实例
生产环境和测试环境都需要配置CI/CD,如果我们写两个gitlab-ci.yml文件来去区分测试和生产。就会出现测试环境提交了代码合并到生产的时候会覆盖生产环境gitlab-ci.yml文件的现象。那么我就可以将生产和测试都写在一个文件中,在only字段中来区分由哪个分支提交数据来触发流水线
stages:
- deploy
- install
deploy:
stage: deploy
script:
- echo "master-deploy"
only:
- master
tags:
- pangbb-runner
install:
stage: install
script:
- echo "master-install"
only:
- master
tags:
- pangbb-runner
deploy-yanrong:
stage: deploy
script:
- echo "yanrong-deploy"
only:
- yanrong
tags:
- pangbb-runner
install-yanrong:
stage: install
script:
- echo "yanrong-install"
only:
- yanrong
tags:
- pangbb-runner