gitlab的CI/CD
·
一、gitlab配置流水线
在项目中设置CI/CD
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4NL0BNOS-1650592674923)(gitlab%E6%B5%81%E6%B0%B4%E7%BA%BF%E9%85%8D%E7%BD%AE.assets/image-20220419160147741.png)]](https://i-blog.csdnimg.cn/blog_migrate/917b898fa84731eba02e7407a609b92e.png)
这个操作会在项目中添加一个名称为".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上有新提交,就会触发流水线
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f5J5WOZk-1650592674926)(gitlab%E6%B5%81%E6%B0%B4%E7%BA%BF%E9%85%8D%E7%BD%AE.assets/image-20220421212326615.png)]](https://i-blog.csdnimg.cn/blog_migrate/d0d04dd5907893d32855c7ba19c2afe4.png)
2.查看具体任务 ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eWzoAlS7-1650592674927)(gitlab%E6%B5%81%E6%B0%B4%E7%BA%BF%E9%85%8D%E7%BD%AE.assets/image-20220421212610386.png)]](https://i-blog.csdnimg.cn/blog_migrate/3cae6eb0ff89a6036b4d0a859dae89c2.png)
这里可以看到:
这里的步骤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不再是成功状态。这中状态说明需要手动执行任务
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6tP7pN0p-1650592674928)(gitlab%E6%B5%81%E6%B0%B4%E7%BA%BF%E9%85%8D%E7%BD%AE.assets/image-20220421213950961.png)]](https://i-blog.csdnimg.cn/blog_migrate/486723886c381d0bfd183631154db969.png)
手动触发这个任务 ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jXTgs3nz-1650592674929)(gitlab%E6%B5%81%E6%B0%B4%E7%BA%BF%E9%85%8D%E7%BD%AE.assets/image-20220421214102224.png)]](https://i-blog.csdnimg.cn/blog_migrate/b141541951517204c327c2bfd915c437.png)
执行成功 ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ofOhlQdy-1650592674930)(gitlab%E6%B5%81%E6%B0%B4%E7%BA%BF%E9%85%8D%E7%BD%AE.assets/image-20220421214137776.png)]](https://i-blog.csdnimg.cn/blog_migrate/eaa821a15af7978c51f8af835a81b437.png)
再返回查看状态,已经变成了成功状态
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-faOVbZhy-1650592674932)(gitlab%E6%B5%81%E6%B0%B4%E7%BA%BF%E9%85%8D%E7%BD%AE.assets/image-20220421214334524.png)]](https://i-blog.csdnimg.cn/blog_migrate/801b673ca0a1563e7eb0b14c8e51441b.png)
五、多分支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
更多推荐
所有评论(0)