GitLabCI-CD入门

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

  1. 获取GitLab地址和Runner 注册token

默认注册采用的交互式,需要交互填写信息。 m5ucdGk2_uPJ2K9BP8-d

  1. 运行注册命令:
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"
  1. 刷新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

相关推荐
杜子不疼.2 小时前
【Linux】Ext系列文件系统(一):文件系统的初识
linux·运维·服务器
zhangzeyuaaa2 小时前
SQL Server删除重复数据
运维·sqlserver
Akamai中国2 小时前
Akamai Cloud客户案例 | Multivrse 信赖 Akamai 为其业务增长提供动力,实现更快资源调配、成本节约与更低延迟
人工智能·云计算·云服务·云存储
2401_865854882 小时前
轻量型服务器和云服务器的区别
运维·服务器
wypywyp2 小时前
6.linux环境优化——vscdoe ssh mobaxterm
linux·运维·ssh
腾科IT教育2 小时前
HCIE-Datacom 认证的主要内容有哪些
运维·网络·华为认证·hcie·hcie考试·it考试
方便面不加香菜2 小时前
Linux基础开发工具--yum和vim
linux·运维·服务器
酣大智2 小时前
计算机网络概述
运维·网络
砚边数影2 小时前
时序数据库InfluxDB迁移替换实测,运维成本显著优化
运维·数据库·时序数据库·kingbase·kingbasees·金仓数据库