部署gitlab-runner

本文详细介绍了GitLabRunner在Linux和Docker环境下的部署,包括自动和手动安装方法,以及如何在GitLab中注册、配置和测试Runner执行CI/CD任务pipeline。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

在这里插入图片描述

  写gitlab-runner之前,我们先了解一个概念 CICD
  CICD,是一种软件开发实践,包含了三个概念,CI全称 Continuous Integration,表示持续集成,CD包含 Continuous Delivery 持续交付和 Continuous Deployment 持续部署。是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。个人理解就是即得做开发是事情,也需要管运维的工作,但是都是当开发把代码提交之后的所有步骤都是自动执行的。

CI : Continuous Integration 持续集成
  开发人员每天频繁的将本地代码“集成”到主干分支,并需要保证主干分支可用,这些新提交在最终合并到主线之前,都需要通过编译和自动化测试流进行验证,在传统的研发过程中,一般通过手动方式执行编译、测试、部署。自动化后,可大幅提高集成频次,同时可以减少维护手工脚本带来的低级问题

CD:Continuous Delivery 持续交付
  持续集成的下一步就是持续交付,CI 在完成了构建、单元测试和集成测试这些自动化流程后,持续交付可以自动把已验证的代码发布到企业自己的存储库。为了实现高效的持续交付流程,务必要确保 CI 已内置于开发管道(pipeline 自动化流水线)。持续交付的目标是拥有一个可随时部署到生产环境的代码库。在流程结束时,运维团队可以快速、轻松地将应用部署到生产环境中。

CD:Continuous Deployment 持续部署
  对于一个完整的 CI/CD 管道来说,最后的阶段就是是持续部署,持续交付的下一步就是持续部署,“自动”将代码部署到生产环境。持续部署意味着开发人员对应用的改动,可以在集成到主分支之后极短的时间内生效(前提是它通过了自动化测试),可以极大的加速与客户的反馈循环。

这篇博文首先讲一下CI工具gitlab-runner ,CD的工具比如Argo CD会在其他的博文中介绍。

一、gitlab-runner是什么

  CI的含义想必大家已经有所了解,Gitlab CICD就是实现持续部署的工具,gitlab-runner配合gitlab CICD一起实现自动化。gitlab-runner是用来执行gitlab上的CI/CD任务(job)的机器,这个机器可以是服务器,也可以是docker或者k8s等。gitlab-runner是用Go语言编写,只有一个二进制文件,不需要其他依赖。安装和使用简单。

Runner的三种类型

  1. shared:运行整个平台项目的作业(gitlab)
  2. group:运行特定group下的所有项目的作业(group)
  3. specific:运行指定的项目作业(project)

Runner的两种状态

  1. locked:无法运行项目作业
  2. paused:不会运行作业

Runner的执行器 Executor

  Runner只负责把任务(job)内容读取到它所在的机器上。但是实际执行任务的并不是Runner,而是执行器(Executor),在注册Runner的时候会要求选择一个执行器,比如shell ,docker,k8s等,今天我们主要讲shell和docker。

Runner的标签 Tags

  注册Runner的时候,可以给它添加一个标签。添加标签以后,就可以在CI/CD配置文件(gitlab-ci.yaml)里,通过标签来调用特定的Runner,

二、Linux(CentOS)部署gitlab-runner

自动安装

  1. 添加gitlab repositroy
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
  1. 安装 gitlab-runner
yum install -y gitlab-runner

手动安装

  1. 下载gitlab-runner安装包
# 用 amd64, arm, arm64 替换 ${arch}
curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/rpm/gitlab-runner_${arch}.rpm"
  1. 安装 gitlab-runner
# 用 amd64, arm, arm64 替换 <arch>
rpm -i gitlab-runner_<arch>.rpm
  1. 查看gitlab-runner是否安装成功
gitlab-runner --version

在这里插入图片描述

三、Docker部署gitlab-runner

  1. 安装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
  1. 查看容器运行状态
docker ps | grep gitlab-runner

在这里插入图片描述

四、注册Runner

  1. 先在gitlab的settings --> CI/CD 目录下面找到Runners

在这里插入图片描述

  上图是Specific 类型的Runners,大家也可以选择Group(在选择的group页面的相同目录)或者Shared类型的Runners。我们稍后注册需要使用Url和token。

  1. linux服务器注册Runner
gitlab-runner register

输入上图中的 Register the runner with this URLregistration token

在这里插入图片描述

再输入Runer的名称 、Tag、可选维护说明,准后选择一个执行器(目前选择的shell)类型就可以了

在这里插入图片描述

可以在Runners配置页面看到注册是Runner

在这里插入图片描述

也可以使用非交互模式使用附加参数来注册运行器

gitlab-runner register --non-interactive \
--executor "shell" \ #执行器
--url "http://192.168.37.13/" \ #对应gitlab地址
--registration-token "uo7sXcM4F66XA-6qv6GM" \ #对应下图令牌
--description "caitlin-demo" \ #runner名称
--tag-list "caitlin" \ #runner标签
--run-untagged="true" \
--locked="false" \   # runner状态
--access-level="not_protected"

Runner注册完成后会在 /etc/gitlab-runner目录下生成一个config.toml的文件。这个就是runner的配置文件。

在这里插入图片描述

  1. docker容器中注册Runner

可以进去容器内部按照上面的步骤注册Runner

# 进入容器命令
docker exec -it gitlab-runner bash

也可以使用非交互模式使用附加参数来注册运行器

docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \
  --non-interactive \
  --url "https://gitlab.com/" \
  --registration-token "$PROJECT_REGISTRATION_TOKEN" \
  --executor "docker" \
  --docker-image alpine:latest \   #选择执行器是docker的时候需要输入基础镜像
  --description "docker-runner" \
  --maintenance-note "Free-form maintainer notes about this runner" \
  --tag-list "docker,aws" \
  --run-untagged="true" \
  --locked="false" \
  --access-level="not_protected"

五、测试Runner跑CI/CD 任务pipeline

  新建一个项目,然后在项目根目录提交一个 .gitlab-ci.yml 的文件。当提交了以后,这时候就会触发pipeline流水线了。关于.gitlab-ci.yml文件语法在这里就不详细介绍了

stages:
  - maven
  - build
  - deploy
  
.maven_job:
  stage: maven
  script:
    - echo "打包项目"
    
.build_job:
  stage: build
  script:
    -  echo "构建项目"

.deploy_job:
  stage: deploy
  script:
    - echo "部署项目"

在gitlab项目的CI/CD下面的Pipelines目录就可以看到流水线的状态了。

总结

  至此gitlab-runner的介绍安装和简单应用就完成了。后面我会继续写基于gitlab argocd k8s整个CICD自动化博文,还请大家多多关注。如有不足之处,还请大佬不吝赐教。

### 使用 Docker 部署 GitLab Runner 的指南 为了使用 Docker 容器化技术来部署 GitLab Runner,可以遵循一系列特定的操作流程。这不仅简化了环境设置过程,还提高了不同开发阶段的一致性和可移植性。 #### 准备工作 确保本地机器上已经安装并配置好 Docker 环境。如果尚未完成此操作,则需先访问官方文档获取详细的安装指导[^2]。 #### 下载 GitLab Runner 镜像 通过执行如下命令下载最新的 GitLab Runner Docker 镜像: ```bash docker pull gitlab/gitlab-runner:latest ``` #### 创建专用网络 (推荐) 为提高容器间通信的安全性和效率,建议创建一个新的自定义桥接网络用于 GitLab 和其关联服务之间的交互: ```bash docker network create gitlab-network ``` #### 启动 GitLab Runner 容器实例 启动 GitLab Runner 实例时指定必要的参数以实现最佳性能和功能支持。下面是一个典型的 `docker run` 命令示例,其中包含了注册 token (`REGISTRATION_TOKEN`) 及其他重要选项: ```bash docker run -d --name gitlab-runner \ --network gitlab-network \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest ``` 这里 `-v` 参数用来挂载主机上的路径至容器内部;特别是 `/var/run/docker.sock` 文件映射允许 GitLab Runner 访问宿主机的 Docker Daemon 进而构建项目镜像。 #### 注册 GitLab Runner 到 CI/CD 流水线 一旦容器成功运行起来之后,就需要将其注册到目标 GitLab 实例中去参与持续集成管道的工作。可以通过向上述创建好的容器发送 HTTP 请求或者直接进入容器内部执行注册脚本来达成目的。具体做法取决于所使用的 GitLab 版本和个人偏好。 对于基于 Web UI 方式的注册方法,请参照官方手册中的说明进行操作[^3]。 #### 自动化配置 Maven 私服连接 当涉及到 Java 或者 Kotlin 类型的应用程序时,在 `.gitlab-ci.yml` 中添加适当的前置指令能够帮助自动复制预设好的 `settings.xml` 至默认位置从而顺利完成依赖解析任务。 ```yaml before_script: - mkdir -p ~/.m2 - cp .mvn/conf/settings.xml ~/.m2/ ``` 以上步骤展示了如何利用 Docker 技术快速搭建起一个可用的 GitLab Runner 并使其参与到自动化测试与发布过程中来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值