服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 如何在 GitLab 执行器中使用 Podman

如何在 GitLab 执行器中使用 Podman

2023-08-24 11:00Linux中国 Linux

GitLab 执行器Runner 是一个与 GitLab CI/CD 配合使用的应用,可在 GitLab 基础设施上的流水线中运行作业。它们通常用于在提交代码后自动编译应用或在代码库上运行测试。你可以将它们视为基于云的 Git 钩子。 主要的公共 GitLab 实例 提供了许多易于访问的共享执行器,可供你在 CI 流水线中使用。你可以在 GitLab 上仓库的 设置Settings -> C

如何在 GitLab 执行器中使用 Podman

GitLab 执行器Runner 是一个与 GitLab CI/CD 配合使用的应用,可在 GitLab 基础设施上的流水线中运行作业。它们通常用于在提交代码后自动编译应用或在代码库上运行测试。你可以将它们视为基于云的 Git 钩子。

主要的公共 GitLab 实例 提供了许多易于访问的共享执行器,可供你在 CI 流水线中使用。你可以在 GitLab 上仓库的 设置Settings -> CI/CD -> 执行器Runners

如何在 GitLab 执行器中使用 PodmanDisplay available GitLab runners in your repository's settings

你可能不想依赖共享执行器,而是选择自己的执行器,原因有很多。例如,控制执行器运行的基础设施以实现额外的安全性和/或隐私、灵活的执行器配置或分配给你的 GitLab 用户帐户的有限 CI 分钟数。

GitLab 执行器依赖于 执行环境executor

那么,Podman 作为执行环境呢?

自 v4.2.0 起,Podman 对 GitLab 执行器提供了原生支持。以下是使用 Podman 作为 GitLab 执行器的 执行环境 的两种方法的快速浏览。

Docker 执行环境

你可以在 GitLab 执行器中使用 Podman 作为 Docker 的直接替代品。就是这样:

本示例使用 2023 年 2 月的 CentOS Stream 9 环境,使用 Podman v4.4.0。它应该可以在任何具有足够新的 Podman 的 RHEL/CentOS Stream/Fedora 环境中正常工作。查看 GitLab 文档 了解先决条件。

首先,安装 Podman:

$ sudo dnf -y install podman

接下来安装 gitlab-runner 包:

# 添加 GitLab 执行器仓库
$ curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
# 安装 gitlab-runner 包
$ sudo dnf -y install gitlab-runner

最后,允许用户在注销后执行任务:

$ sudo loginctl enable-linger gitlab-runner

配置并注册执行器

使用以下步骤配置 Docker 运行环境。

安装 gitlab-runner 包会创建一个 gitlab-runner 用户帐户,但你需要 root 访问权限才能操作该用户帐户。gitlab-runner 可以在用户模式下运行,但需要一些手动干预来进行构建处理。在此示例中,我使用 sudo 在系统模式下运行它。它看起来是这样的:

$ sudo gitlab-runner register
Runtime platform                                    arch=amd64 os=linux pid=7978 revision=d540b510 version=15.9.1
Running in system-mode.
Enter the GitLab instance URL (for example, https://gitlab.com/):
https://gitlab.com
Enter the registration token:
xxxxxxxxxxxxxxxxx
Enter a description for the runner:
[lmandvek-c9s-gitlab-runner]:
Enter tags for the runner (comma-separated):
Enter optional maintenance note for the runner:
WARNING: Support for registration tokens and runner parameters in the 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more information, see https://gitlab.com/gitlab-org/gitlab/-/issues/380872
Registering runner... succeeded                     runner=GR13489419oEPYcJ8
Enter an executor: custom, docker, ssh, docker-ssh+machine, docker-ssh, parallels, shell, virtualbox, docker+machine, instance, kubernetes:
docker
Enter the default Docker image (for example, ruby:2.7):
registry.gitlab.com/rhcontainerbot/pkg-builder
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"

你将需要一些额外的配置才能使用 Podman。配置执行器为每个作业创建一个网络。有关更多信息,请参阅 GitLab 文档。

首先,启用 Podman 系统服务并修改 /etc/gitlab-runner/config.toml 中的环境:

[[runners]]
    environment = ["FF_NETWORK_PER_BUILD=1"]
    [runners.docker]
        host = "unix:///run/user/1001/podman/podman.sock"

重启执行器以实施更改:

$ sudo gitlab-runner restart

验证新的执行器在 GitLab 项目的 设置Settings -> CI/CD -> 执行器Runners

如何在 GitLab 执行器中使用 PodmanRestart the GitLab runner

接下来,验证你的 CI 流水线正在使用执行器。你的 CI 任务日志将提及正在使用的执行器的名称以及任何其他配置信息,例如 执行器的执行环境的功能标志和容器镜像。

如何在 GitLab 执行器中使用 PodmanView CI tasklogs to display the runner

Podman-in-Podman(pipglr)

Chris Evich 创建了 pipglr,这是一个 Podman-in-Podman 设置,用于使用免 root 的 Podman 来支持你自己的免 root 的 GitLab 执行器。此方法不需要对 .gitlab-ci.yaml 配置进行任何更改,因此你可以继续按原样使用现有设置。

以下是帮助你运行此程序的快速设置指南。

配置步骤

容器镜像是从 pipglr Containerfile 自动构建的,因此将镜像设置为该仓库:

$ IMAGE="registry.gitlab.com/qontainers/pipglr:latest"

接下来,使用你的 GitLab 注册令牌创建 Podman 密钥:

$ echo '<actual registration token>' | podman secret create REGISTRATION_TOKEN -

创建一个空白的 config.toml,稍后将包含你的所有执行器设置。你必须执行此步骤才能使以下 podman container register runlabel $IMAGE 步骤成功:

$ touch ./config.toml  # 重要:文件必须存在,即使是空的。

注册你的执行器。你可以重复此步骤来注册多个执行器。如果你想使用可能不同的标签或配置选项集并行运行多个 CI 任务,这非常有用。

$ podman container runlabel register $IMAGE

使用你选择的编辑器编辑 config.toml。这是可选的,但通常需要更改用于实际 CI 任务的容器镜像。默认情况下,镜像设置为:registry.fedoraproject.org/fedora:latest

$ $EDITOR ./config.toml  # if desired

最后,配置对卷的访问。容器卷内使用多个用户,因此你必须专门配置它们以允许访问。再次使用 runlabel 来完成:

$ podman container runlabel setupstorage $IMAGE
$ podman container runlabel setupcache $IMAGE

测试执行器

是时候检查配置了。首先启动 GitLab 执行器容器:

$ podman container runlabel run $IMAGE

允许执行器用户在注销后运行服务:

$ sudo loginctl enable-linger $(id -u)

验证你的新执行器在 GitLab 项目的 设置Settings -> CI/CD -> 执行器Runners

如何在 GitLab 执行器中使用 PodmanVerify the new runner is visible

最后,验证你的 CI 流水线正在使用你的执行器:

如何在 GitLab 执行器中使用 PodmanVerify the CI pipeline

总结

使用 Podman 启动 GitLab 执行器有多种方法,我在此处概述了其中两种。尝试一下,然后让我知道哪一个最适合你。如果 Docker 执行环境方法有任何问题,请登录并通过 Podman 上游 或 GitLab 支持 提交问题。如果 pipglr 方法出现问题,请在 pipglr 上游 提交问题。

GitLab 与 Podman 一起运行愉快

延伸 · 阅读

精彩推荐
  • Linuxlinux 命名管道实例详解

    linux 命名管道实例详解

    这篇文章主要介绍了linux 命名管道实例详解的相关资料,需要的朋友可以参考下...

    魏尔肖10092022-01-24
  • LinuxLinux 监视系统资源使用率

    Linux 监视系统资源使用率

    虽然说 Linux 操作系统要比Windows操作系统稳定的多。但是这个稳定是相对而言的。也就是说,Linux操作系统也会有闹脾气的时候。在某些情况下,其系统的资...

    Linux教程网3672020-04-11
  • LinuxLinux和windows中的换行符差异问题

    Linux和windows中的换行符差异问题

    LINUX的换行符在Windows记事本打开不换行或出现黑点是由于Linux和windows中的换行符差异问题造成的。 ...

    mkingdom5282019-12-26
  • LinuxLinux下Nginx安装的方法(pcre和openssl)

    Linux下Nginx安装的方法(pcre和openssl)

    本篇文章主要介绍了Linux下Nginx安装的方法(pcre和openssl),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    青鱼博客8472022-02-28
  • LinuxLinux利用sftp命令传输文件(极少数人知道的方法)

    Linux利用sftp命令传输文件(极少数人知道的方法)

    sftp使用的人数不多,所以很多用户并不知道sftp命令的用途,sftp命令能够用来传输文件,和ftp有些相似,下面为大家介绍下Linux使用sftp命令传输文件的方法...

    服务器之家13002019-09-17
  • Linux5款最佳的免费Linux杀毒软件

    5款最佳的免费Linux杀毒软件

    Linux的安全性毋庸置疑。很多Linux新手都这样认为,但是Linux同样也有可能遭受病毒的侵袭。这篇文章主要介绍了5款最佳的免费Linux杀毒软件,需要的朋友可以...

    Linux教程网22752021-10-14
  • Linux获取Linux命令帮助的六种方法

    获取Linux命令帮助的六种方法

    获取帮助是学习Linux第一个必须要掌握的命令,Linux提供了极为详细的帮助工具及文档,一定要养成查帮助文档的习惯(没必要记忆所有东西),可以大大减...

    LINUX教程网6332019-11-21
  • LinuxLinux创建FIFO文件类型的方法

    Linux创建FIFO文件类型的方法

    FIFO管道是一种文件类型,在Linux上创建FIFO非常容易,下面小编将针对FIFO管道的创建和使用做个详细介绍,感兴趣的朋友可以看看 ...

    系统之家5592019-10-15