Redian新闻
>
如何在 GitLab 执行器中使用 Podman | Linux 中国

如何在 GitLab 执行器中使用 Podman | Linux 中国

科技
 
导读:使用 Podman 启动 GitLab 执行器有多种方法,我在本文中概述了其中两种。           
本文字数:4948,阅读时长大约:6分钟

使用 Podman 启动 GitLab 执行器有多种方法,我在本文中概述了其中两种。

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

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

Display available GitLab runners in your repository's settings

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

GitLab 执行器依赖于 执行环境🔗 docs.gitlab.com(executor) 工具来运行 CI 作业。执行环境有许多选项可用:Docker、Kubernetes、VirtualBox 等。

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

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

Docker 执行环境

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

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

首先,安装 Podman:

  1. $ sudo dnf -y install podman

接下来安装 gitlab-runner 包:

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

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

  1. $ sudo loginctl enable-linger gitlab-runner

配置并注册执行器

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

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

  1. $ sudo gitlab-runner register
  2. Runtime platform arch=amd64 os=linux pid=7978 revision=d540b510 version=15.9.1
  3. Running in system-mode.
  4. Enter the GitLab instance URL (for example, https://gitlab.com/):
  5. https://gitlab.com
  6. Enter the registration token:
  7. xxxxxxxxxxxxxxxxx
  8. Enter a description for the runner:
  9. [lmandvek-c9s-gitlab-runner]:
  10. Enter tags for the runner (comma-separated):
  11. Enter optional maintenance note for the runner:
  12. 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
  13. Registering runner... succeeded runner=GR13489419oEPYcJ8
  14. Enter an executor: custom, docker, ssh, docker-ssh+machine, docker-ssh, parallels, shell, virtualbox, docker+machine, instance, kubernetes:
  15. docker
  16. Enter the default Docker image (for example, ruby:2.7):
  17. registry.gitlab.com/rhcontainerbot/pkg-builder
  18. Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
  19. Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"

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

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

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

重启执行器以实施更改:

  1. $ sudo gitlab-runner restart

验证新的执行器在 GitLab 项目的 设置(Settings) -> CI/CD -> 执行器(Runners) 中可见:

Restart the GitLab runner

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

View CI tasklogs to display the runner

Podman-in-Podman(pipglr)

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

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

配置步骤

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

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

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

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

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

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

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

  1. $ podman container runlabel register $IMAGE

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

  1. $ $EDITOR ./config.toml # if desired

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

  1. $ podman container runlabel setupstorage $IMAGE
  2. $ podman container runlabel setupcache $IMAGE

测试执行器

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

  1. $ podman container runlabel run $IMAGE

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

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

验证你的新执行器在 GitLab 项目的 设置(Settings) -> CI/CD -> 执行器(Runners) 中可见:

Verify the new runner is visible

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

Verify the CI pipeline

总结

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

GitLab 与 Podman 一起运行愉快 🙂

(题图:MJ/97e0ff4d-b769-4e20-990f-8c1e89e48434)


via: https://opensource.com/article/23/3/podman-gitlab-runners

作者:Lokesh Mandvekar 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者 :geekpi
💎💎💎💎
翻译: 1998.5 篇
|
贡献: 3590 天
2013-10-25
2023-08-24
https://linux.cn/lctt/geekpi
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
在 Arch Linux 上安装和使用 Yay | Linux 中国在 Linux 中使用 cp 命令 | Linux 中国哞~ 我的 Linux 终端里有头牛 | Linux 中国Linux 游戏的下一个秘密武器:Bottles Next | Linux 中国如何在 Linux 中映射 SAN LUN、磁盘和文件系统 | Linux 中国SparkyLinux 7 “Orion Belt” 评测:稳定性与新鲜感的结合 | Linux 中国10 分钟让你了解 Linux ABI | Linux 中国为什么黑客更喜欢使用 Kali Linux? | Linux 中国如何在 Linux 主机和 KVM 中的 Windows 客户机之间共享文件夹 | Linux 中国适用于 Linux 的 5 个最佳 PDF 编辑器 | Linux 中国历史小说《黄裳元吉》第一百零五章 变风如何在 Linux 中查找映射到 VxVM 磁盘的 SAN LUN | Linux 中国你好,我是筚(bì)篥( lì)!Bash 基础知识系列 #5:在 Bash 中使用数组 | Linux 中国我在怀念什么Linux 中的 ls 命令使用教程 | Linux 中国在 Linux 中使用 cat 命令 | Linux 中国普京自毁长城?在 Linux 中使用 cd 命令 | Linux 中国Autodesk分享:让3D美术师更强大,如何在Maya中使用AI插件如何在 Ubuntu 22.04 中安装和使用 Wireshark | Linux 中国使用 Btrfs 快照方便升级 Fedora Linux 且易于回退 | Linux 中国Linux 版 WhatsApp | Linux 中国Arch Linux 下全面使用 Wayland 的配置指南 | Linux 中国如何在 Linux 中扩展 Veritas 文件系统(VxFS) | Linux 中国如何制作一个 Linux Mint 立付 USB | Linux 中国如何在 Linux 中注释 PDF | Linux 中国Ubuntu Linux 的 7 个最佳应用坞 | Linux 中国你的旧电脑是 “过时” 了,还是使用 Linux 的机会? | Linux 中国Linux 如何挽救老旧电脑(和地球) | Linux 中国在 Linux 文件系统中使用 attr 添加扩展属性 | Linux 中国10 个最好的 Xfce 桌面环境的 Linux 发行版 | Linux 中国浮世万千 有喜有悲巴哈马拿骚(Nassau),海景大观Erklärung zur Zusammenarbeit
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。