GitLab CI-CD入门
目录
1、GitLabCI/CD简介
GitLabCI/CD简介
GitLabCI/CD是GitLab内置的持续集成与持续部署系统
- 开源: CI/CD是开源GitLab社区版和专有GitLab企业版的一部分。(极狐)
- 易于学习: 官方具有详细的学习操作文档。
- 无缝集成: CI/CD是GitLab的一部分,支持从计划到部署,具有出色的用户体验。 (例如:做一些基于版本控制系统的提交流水线、合并流水线,是很方便的!)
- 可扩展: 可以根据需要添加任意数量的构建节点。
- 更快的结果: 每个构建可以拆分为多个作业,这些作业可以在多台计算机上并行运行。
- 针对交付进行了优化: 多个阶段,手动部署, 环境 和 变量。
- 针对交付进行了优化: 多个阶段,手动部署, 环境和变量。
jenkins里,你想要获取git分支、git提交用户的话,我们都需要先去抓收据,去采集数据,进行一个过滤,再拿到;
但在gitlab里,使用gitlab ci时,里面就有现成的环境变量,我们直接使用就好,所以这一点,还是有很大的优势的。这个文档是大家在开发流水线时必须依赖的一个文档,使用时要注意下这里的版本!
https://docs.gitlab.com/14.9/ee/ci/variables/predefined_variables.html
gitlab ci/cd官方文档
https://docs.gitlab.com/14.9/ee/ci/
常用变量参考文档:
https://docs.gitlab.com/14.9/ee/ci/variables/predefined_variables.html
Pipeline
在每个项目中,使用名为的YAML文件配置GitLab CI/CD流水线。
Stages
一条流水线可以包含若干个阶段, 一个阶段可以包含若干个作业。
Job
作业是具体要执行的任务,命令脚本语句的集合;
Runner
Runner是每个作业的执行节点 ;每个作业可以根据标签选择不同的构建节点;
2、GitLabRunner安装部署
见独立md文件。
3、开发第一条Pipeline
1. gitlab-ci.yml
如何开启GitLabCI/CD? 首先要将代码存储到GitLab, 然后在代码库的(默认根目录)添加一个.gitlab-ci.yml
文件。该文件中定义了流水线的阶段和运行步骤。
根据不同的场景,可以自定义流水线定义文件的位置。
(默认)存储到项目根目录: /.gitlab-ci.yml
为项目中添加.gitlab-ci.yml
文件,表示启动的CI/CD。默认提交动作会自动运行该.gitlab-ci.yml
中定义的作业。
- 来到gitlab项目里,创建一个
.gitlab-ci.yml
文件
- 1 填写当前创建的文件的名称
.gitlab-ci.yml
; - 2 选择文件的类型;
- 3 选择一个项目模板;(这里我们先选择一个bash类型)
进行提交,默认就会自动跑流水线了:
但是,此时流水线状态为pending状态,这是为什么呢?
- 根据报错提示,可以知道是因为
.gitlab-ci.yml
文件里没指定runner
我们这里先重新写下代码
因此,一般情况下,我们再写流水线代码时,一般需要给每个阶段指定tags:
注意:这里的每个阶段都要添加这个tags才行!
改好后,提交,并观察流水线运行状态:
此时,流水线运行状态就正常了。
- 我们这里想手动来触发下流水线,观察下test阶段2个作业,为什么这2个作业不是并行运行的呢?
- 是因为我们的gitlab-runner的配置文件里需要修改下并行选项参数:
[root@Devops6 ~]#vim /etc/gitlab-runner/config.toml
将concurrent = 1
改为
concurrent = 10
配置完后,默认生效的。
- 我们再来运行一次流水线,观察下现象
可以看到,这里是并行运行作业的了,符合预期。
2. 流水线页面
- 1 清除runner的缓存;
- 2 进行CI文件语法校验;
- 3 手动触发运行流水线;
- 4 流水的步骤, 可以查看各个阶段的运行日志;
3. Pipeline编辑器
4、Pipeline开发工具与设置
1.Pipeline开发工具
可视化编辑器
变更.gitlab-ci.yml文件后, 可以通过Visualize
对CI文件中的定义进行可视化;
语法检测校验
通过Lint可以检测当前CI文件是否存在语法错误;若存在语法错误可以根据提示进行修正;
作业运行日志
一条流水线包含很多个作业,每个作业的运行日志可以在Jobs
界面看到。
Pipeline环境变量
预定义变量信息:https://docs.gitlab.com/ee/ci/variables/predefined_variables.html
代码类
- CI_COMMIT_AUTHOR 提交人
- CI_COMMIT_BRANCH 提交分支
- CI_COMMIT_MESSAGE
- CI_COMMIT_REF_NAME
- CI_COMMIT_SHORT_SHA
作业类:
- CI_JOB_ID
- CI_JOB_NAME
- CI_JOB_STAGE
- CI_JOB_URL
流水线类:
- CI_PIPELINE_ID
- CI_PIPELINE_SOURCE
- CI_PIPELINE_TRIGGERED
- CI_PIPELINE_URL
2.Pipeline设置
General pipelines
管道权限、取消冗余管道、跳过历史部署作业;
为项目自定义ci文件
- 修改名称:gitlab-ci-cd.yml
- 自定义路径:…/ci/xx/xx/.yml
- 也是可以这种raw格式的:(但是切记,一定是可公开访问的路径,不能到凭据信息)
http://172.29.9.101:8076/devops6/devops-demo-service/-/raw/main/.gitlab-ci.yml
为项目设置流水线状态标志
支持Markdown、HTML、AsciiDoc格式。
💘 实战:为项目设置流水线状态标志-2023.5.8(测试成功)
- 实验环境
gitlab/gitlab-ce:15.0.3-ce.0
-
实验软件(无)
-
在项目代码的
README.md
文件里添加如下部分代码
[![pipeline status](http://172.29.9.101:8076/devops6/devops-demo-service/badges/main/pipeline.svg)](http://172.29.9.101:8076/devops6/devops-demo-service/-/commits/main)
此部分代码位置:gitlab项目-Settings-CI/CD-Gernral Pipelines-Pipeline Status
- 本次在
main分支
的README.md
文件下添加如上部分代码
- 提交代码后,触发流水线,观察结果
符合预期。😘
设置管道(pipeline)预览权限
可以来到项目
>Project information
>Members
:给这个项目里增加成员
Guest和非项目成员无法,看到管道中作业的日志和管道所生成的制品;
开启公共的管道访问:
- 公共项目,每个人都可以访问。
- 内部项目,对于除外部用户之外的所有登录用户。
- 私人项目,所有项目成员(Guest 或更高级别)。
可以来到项目>Settings>CI/CD>Genernal pipelines
:配置管道权限!
关于我
我的博客主旨:
- 排版美观,语言精炼;
- 文档即手册,步骤明细,拒绝埋坑,提供源码;
- 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!
🍀 微信二维码
x2675263825 (舍得), qq:2675263825。
🍀 微信公众号
《云原生架构师实战》
🍀 语雀
https://www.yuque.com/xyy-onlyone
🍀 csdn
https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421
🍀 知乎
https://www.zhihu.com/people/foryouone
最后
好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!