01-GitLabCI/CD简介

GitLabCI/CD是GitLab内置的持续集成与持续部署系统

- 开源: CI/CD是开源GitLab社区版和专有GitLab企业版的一部分。(极狐)
- 易于学习: 官方具有详细的学习操作文档。
- 无缝集成: CI/CD是GitLab的一部分,支持从计划到部署,具有出色的用户体验。
- 可扩展: 可以根据需要添加任意数量的构建节点。
- 更快的结果: 每个构建可以拆分为多个作业,这些作业可以在多台计算机上并行运行。
- 针对交付进行了优化: 多个阶段,手动部署, 环境 和 变量。

Pipeline
在每个项目中,使用名为的YAML文件配置GitLab CI/CD



Stages
一条流水线可以包含若干个阶段, 一个阶段可以包含若干个作业。

Job
作业是具体要执行的任务,命令脚本语句的集合;

Runner
Runner是每个作业的执行节点 ;每个作业可以根据标签选择不同的构建节点;

02-GitLabRunner安装部署

- GitLab Runner是一个开源项目,用于运行作业并将结果发送回GitLab。
- 与GitLabCI结合使用,GitLabCI是GitLab随附的用于协调作业的开源持续集成服务。
- GitLab Runner是用Go编写的,可以在Linux,macOS和Windows操作系统上运行。
- 容器部署需使用最新Docker版本。GitLab Runner需要最少的Docker v1.13.0。
- GitLab Runner版本应与GitLab版本同步。(避免版本不一致导致差异化)
- 可以根据需要配置任意数量的Runner。
Runner 安装

类型
- shared 共享类型,运行整个平台项目的作业(gitlab)
- group 项目组类型,运行特定group下的所有项目的作业(group)
- specific项目类型,运行指定的项目作业(project)
状态
- locked: 锁定状态,无法运行项目作业
- paused: 暂停状态,暂时不会接受新的作业
步骤:
- 安装
gitlab-runner工具 - 使用
gitlab-runner工具向GitLab Server注册Runner节点。
1.在Linux系统安装GR
基于Linux CentOS8操作系统, 部署GitLabRunner。
GitLab部署包下载:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el8/
Runner部署包下载:https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/yum/el8-x86_64/
bash
## 安装runner
rpm -ivh gitlab-runner-15.0.3-1.x86_64.rpm
## 查看进程
[root@zeyang-nuc-service gitlab-runner]# ps aux | grep -v grep | grep runner
root 694811 0.1 0.1 152232 35720 ? Ssl 22:04 0:00 /usr/bin/gitlab-runner run --working-directory /home/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --user gitlab-runner
2. 注册Runner
- 获取GitLab地址和Runner 注册token

默认注册采用的交互式,需要交互填写信息。 m5ucdGk2_uPJ2K9BP8-d
- 运行注册命令:
bash
[root@zeyang-nuc-service gitlab_runner]# gitlab-runner register
Runtime platform arch=amd64 os=linux pid=6688 revision=bbcb5aba version=15.3.0
Running in system-mode.
## 输入GitLab实例的URL
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://192.168.1.200:8076
## 输入Runner注册Token
Enter the registration token:
q_m7Z9S7Bx9Mvq_dCJgR
## 填写该注册Runner的描述信息
Enter a description for the runner:
[zeyang-nuc-service]: build01
## 为该Runner配置一个标签(后续作业可以通过tag指定在哪个runner上面运行构建)
Enter tags for the runner (comma-separated):
build,go,linux,mvn
Enter optional maintenance note for the runner:
Registering runner... succeeded runner=q_m7Z9S7
## 为Runner选择一个执行器
Enter an executor: parallels, ssh, virtualbox, docker-ssh+machine, custom, docker, docker-ssh, shell, docker+machine, kubernetes:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

使用非交互模式注册
bash
gitlab-runner register \
--non-interactive \
--url "http://192.168.1.200:8076/" \
--registration-token "q_m7Z9S7Bx9Mvq_dCJgR" \
--executor "shell" \
--description "buildrunner" \
--tag-list "build,k8s,go" \
--run-untagged="true" \
--access-level="not_protected"
- 刷新GitLab管理页面

3. 配置Runner
通过Gitlab后台可以看下runner的配置:

Path: /etc/gitlab-runner/config.toml
bash
concurrent = 1 ## 可并行运行作业的数量, 0表示不限制;
check_interval = 0 ## 检查新作业的时间间隔, 0表示默认 3秒;
[session_server] ## 允许用户与作业进行交互,例如web终端;
session_timeout = 1800
[[runners]]
name = "my first runner" ## Runner名称;
url = "http://192.168.1.200/" ## GitLab Server地址;
token = "z6QEqyGpDrvzNgfxLiVh" ## Runner token;
executor = "shell" ## Runner的执行器;
[runners.custom_build_dir] ## 允许用户为作业定义自定义构建目录;
[runners.cache] ## 分布式缓存目录;
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
高级配置参考: https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runnerscustom-section
4. Runner常用命令
bash
gitlab-runner register #默认交互模式下使用,非交互模式添加 --non-interactive
gitlab-runner list #此命令列出了保存在配置文件中的所有运行程序
gitlab-runner verify #此命令检查注册的runner是否可以连接,但不验证GitLab服务是否正在使用runner。 --delete 删除
gitlab-runner unregister #该命令使用GitLab取消已注册的runner。
#使用令牌注销
gitlab-runner unregister --url http://gitlab.example.com/ --token t0k3n
#使用名称注销(同名删除第一个)
gitlab-runner unregister --name test-runner
#注销所有
gitlab-runner unregister --all-runners
group

project

后台admin

03-开发第一条Pipeline

1. gitlab-ci.yml
如何开启GitLabCI/CD? 首先要将代码存储到GitLab, 然后在代码库的(默认根目录 )添加一个.gitlab-ci.yml文件。该文件中定义了流水线的阶段和运行步骤。
根据不同的场景,可以自定义流水线定义文件的位置。
- (默认)存储到项目根目录: /.gitlab-ci.yml
为项目中添加.gitlab-ci.yml文件,表示启动的CI/CD。默认提交动作会自动运行该.gitlab-ci.yml中定义的作业。
bash
stages:
- build
- test
- deploy
build1:
tags:
- go
stage: build
script:
- echo "${CI_COMMIT_AUTHOR} ${CI_COMMIT_BRANCH} ${CI_PROJECT_ID}"
test1:
tags:
- go
stage: test
script:
- echo "Do a test here"
- echo "For example run a test suite"
test2:
tags:
- go
stage: test
script:
- echo "Do another parallel test here"
- echo "For example run a lint test"
deploy1:
tags:
- go
stage: deploy
script:
- echo "Do your deploy here"

- 1 填写当前创建的文件的名称
.gitlab-ci.yml; - 2 选择文件的类型;
- 3 选择一个项目模板;

2. 流水线页面

- 1 清除runner的缓存;
- 2 进行CI文件语法校验;
- 3 手动触发运行流水线;
- 4 流水的步骤, 可以查看各个阶段的运行日志;
3. Pipeline编辑器

04-Pipeline开发工具与设置

04.Pipeline开发工具

可视化编辑器
变更.gitlab-ci.yml文件后, 可以通过Visualize对CI文件中的定义进行可视化;

语法检测校验
通过Lint可以检测当前CI文件是否存在语法错误;若存在语法错误可以根据提示进行修正;

作业运行日志
一条流水线包含很多个作业,每个作业的运行日志可以在Jobs界面看到。

环境变量
预定义变量信息: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
05.Pipeline设置

导航到: Settings > CI/CD
General pipelines
管道权限、取消冗余管道、跳过历史部署作业;


为项目自定义ci文件
为项目设置流水线状态标志
支持Markdown、HTML、AsciiDoc格式。


带学员+V helloword00823