GitLab CI/CD简介二

GitLab CI/CD 是 GitLab 提供的持续集成服务,用于构建/测试代码并部署到生产环境。它通过 GitLab Runner 这个代理服务来运行我们在 .gitlab-ci.yml 文件中定义的作业。

GitLab Runner 是一个开源项目,用于运行您的作业并将结果发送回 GitLab。它与 GitLab CI 一起使用,GitLab CI 是 GitLab 随附的开源持续集成服务,用于协调作业。

GitLab Runner 有三种类型:

  • shared:运行整个GitLab平台上的所有项目的job
  • group: 运行特定group下的所有项目的job
  • specific: 运行指定的某个项目的job

GitLab Runner 有两种状态:

  • locked:无法运行任何job
  • paused:不会运行任何新的job,已经running的job会继续执行

我们可以很方便的使用Docker来安装GitLab Runner。只需要运行以下命令:

docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

这将使用Docker运行一个GitLab Runner容器,并挂载两个卷:

  • /srv/gitlab-runner/config:GitLab Runner的配置文件
  • /var/run/docker.sock:Docker socket,用于Docker Executor

接下来,我们需要注册这个Runner,登陆GitLab,进入组Project的设置页面,选择Runners,展开 runners 后点击 Register a new runner 按钮。选择运行类型为specific Runner,输入Runner的名字,选择它属于的组等选项。点击 Register runner 按钮,得到一个 Runner 的指定 URL 和一个接受的令牌。

复制 Runner 要连接的 URL 和令牌,在 Runner 容器中执行:

gitlab-runner register

输入 URL、令牌和 Runner 的名字,GitLab Runner 就注册成功了!

在 .gitlab-ci.yml 中编写Job后,每次push代码到GitLab,就会触发CI流程,GitLab会调用对应的Runner来执行Job,从而完成编译、测试和部署的自动化流程。

综上,GitLab CI/CD 中 GitLab 本身相当于 Jenkins 的 Master,GitLab Runner 类似 Jenkins 的 Agent,用于实际运行 Job。GitLab CI/CD 的完整流程是:

  1. 编写 .gitlab-ci.yml 文件,指定触发CI/CD的分支
  2. Push 代码到上述分支,触发CI/CD流程,生成Pipeline
  3. GitLab Runner 拉取代码,运行Pipeline中的Job
  4. Runner 初始化Executor,执行Job,产物挂载到Nginx根目录
  5. 完成自动化部署

gitlab-runner register
–non-interactive
–url “http://192.168.1.200/”
–registration-token “Bd6gzBK5evJqa9wN99Nf”
–executor “shell”
–description “buildrunner”
–tag-list “build,k8s,go”
–run-untagged=“true”
–locked=“false”
–access-level=“not_protected”

这段代码是用于注册GitLab Runner的命令。我们可以解析如下:
–non-interactive:以非交互方式注册Runner,不提示输入
–url:GitLab实例URL,用于注册该Runner
–registration-token:项目设置页面生成的Runner注册Token
–executor:指定Runner使用的执行器,这里是Shell执行器
–description:为该Runner添加描述,方便管理识别
–tag-list:为该Runner添加标签,后续job可以指定运行在包含某标签的Runner上
–run-untagged:该Runner是否能运行未标记的job
–locked:该Runner是否被锁定,锁定时无法运行job
–access-level:该Runner的访问级别,用于控制可以运行其job的项目
通过这个命令,我们就完成了一个GitLab Runner的注册与配置。注册后,该Runner就可以运行我们GitLab中的CI/CD,执行.gitlab-ci.yml中定义的Job了。
注册Runner有几点需要注意:

  1. 我们需要有个人访问Token或项目访问Token的权限来注册Runner。
  2. 选择Executor时,需要考虑我们的作业是基于什么技术实现的。常用的有Shell、Docker等。
  3. 为Runner添加恰当的标签,这样我们可以灵活控制某类job运行在包含特定标签的Runner上。
  4. 设置Runner的访问级别,避免该Runner被无关项目误用,影响系统性能。
  5. Runner一旦注册,就需要定期检查其运行状态,并及时更新维护。
    熟练掌握Runner的注册与管理,是使用GitLab CI/CD的基础。我们可以根据实际的应用场景选择不同类型的Runner,给予恰当的权限,高效稳定地运行我们的CI/CD作业

GitLab Runner支持多种类型的Executor,除了shell外,还有:

  1. docker:使用Docker executor可以运行job在Docker环境中,我们可以指定Docker镜像等。这在需要构建Docker镜像的CI流程中很有用。
  2. docker-ssh:使用SSH连接到Docker宿主机,在其上使用Docker executor运行job。这在Runner没有Docker环境但需运行Docker job的场景下可用。
  3. parallels:使用Parallels Desktop虚拟机运行macOS job。
  4. ssh:使用SSH连接远程主机,在其上运行job。这在Runner服务器上没有执行环境但有其他服务器可用的场景下可用。
  5. virtualbox:使用VirtualBox虚拟机运行job。
  6. docker+machine:使用Docker Machine在云平台上启动Docker主机,并在其上使用Docker executor运行job。
  7. kubernetes:在Kubernetes集群上运行job。
    除此之外,还有 carcinoma、docker-ssh+machine、parallels-ssh 等 executor 类型。
    所以,总的来说,主要有:
  • Shell:最基本的executor,直接在Runner上运行shell命令。
  • Docker:使用Docker运行容器化的job。
  • 虚拟机:使用Parallels Desktop或VirtualBox等在虚拟机上运行job。
  • SSH:通过SSH连接其他服务器运行job。
  • Kubernetes:在K8s集群上运行job的Pod。
  • 云平台Docker主机:使用Docker Machine在云平台启用Docker主机,然后在其上运行job。
    根据我们的使用场景,可以选择最合适的Executor类型。如果仅需要简单的shell脚本或构建语言(Go、Python等),选择Shell Executor即可。如果需要构建Docker镜像或运行容器,选择Docker Executor。需要运行macOS下的job可选择Parallels,需要使用远程主机环境可以选择SSH等。

sudo gitlab-runner start
这条命令是用于启动已注册的GitLab Runner的。
当我们注册好Runner后,它并不会自动启动。我们需要使用此命令手动启动Runner,才能使其开始执行job。
启动Runner有几点需要注意:

  1. 建议以服务的方式启动Runner,即使用systemctl start gitlab-runner,而不是手动运行启动命令。这可以确保Runner在机器重启后自动启动。
  2. 如果Runner注册时使用的URL、Token等信息发生变化,需要重注册Runner。否则启动时可能会出现找不到Runner或验证失败的错误。
  3. 如果 Runner长时间关闭,会有定期清理旧job记录的机制。启动时如果检测到有未完成的旧job,会尝试重新执行,这可能导致出现未预料的情况,需要注意。
  4. 启动时要确认所需环境都已正确配置,如Docker、虚拟机等。否则后续job执行时会出现各种错误。
  5. 启动成功后,会在logs目录下生成gitlab-runner.log文件,我们需要定期查看该日志确保Runner运行正常以及job正确执行。
  6. 可以使用gitlab-runner status命令查看Runner当前状态,包括:
  • down:处于关闭状态
  • running:正在运行job
  • idle:空闲,可以接收并运行新的job
    所以,总的来说,启动 GitLab Runner 需要注意:
  • 建议使用服务的方式启动,确保重启自动启动
  • 重要信息发生变化需重注册Runner
  • 长时间关闭需注意旧job重启情况
  • 确认所需环境都正确配置
  • 定期查看日志确保正常运行
  • 使用status命令查看当前状态
    熟练掌握Runner的启动、停止、状态查看等管理技能,可以更好地保证我们的CI/CD系统稳定运行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值