@geekpi
https://linux.cn/article-16122-1.html
This commit is contained in:
Xingyu Wang 2023-08-24 09:33:19 +08:00
parent 1eedee818e
commit f92d2e5c82

View File

@ -3,32 +3,36 @@
[#]: author: "Lokesh Mandvekar https://opensource.com/users/lsm5"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-16122-1.html"
如何在 GitLab Runners 中使用 Podman
如何在 GitLab 执行器中使用 Podman
======
GitLab Runner 是一个与 GitLab CI/CD 配合使用的应用,可在 GitLab 基础设施上的管道中运行作业。它们通常用于在提交代码后自动编译应用或在代码库上运行测试。你可以将它们视为基于云的 [Git hook][1]。
![][0]
主要的公共 [GitLab 实例][2]提供了许多易于访问的共享 runner可供你在 CI 管道中使用。你可以在 GitLab 上仓库的 **设置** -> **CI/CD** -> **Runners** 中找到共享 runner 的列表。
> 使用 Podman 启动 GitLab 执行器有多种方法,我在本文中概述了其中两种。
GitLab <ruby>执行器<rt>Runner</rt></ruby> 是一个与 GitLab CI/CD 配合使用的应用,可在 GitLab 基础设施上的流水线中运行作业。它们通常用于在提交代码后自动编译应用或在代码库上运行测试。你可以将它们视为基于云的 [Git 钩子][1]。
主要的公共 [GitLab 实例][2] 提供了许多易于访问的共享执行器,可供你在 CI 流水线中使用。你可以在 GitLab 上仓库的 <ruby>设置<rt>Settings</rt></ruby> -> CI/CD -> <ruby>执行器<rt>Runners</rt></ruby> 中找到共享执行器的列表。
![Display available GitLab runners in your repository's settings][3]
你可能不想依赖共享 runner 而是选择自己的 runner原因有很多。例如控制 runner 运行的基础设施以实现额外的安全性和/或隐私、灵活的 runner 配置或分配给你的 GitLab 用户帐户的有限 CI 分钟数。
你可能不想依赖共享执行器,而是选择自己的执行器,原因有很多。例如,控制执行器运行的基础设施以实现额外的安全性和/或隐私、灵活的执行器配置或分配给你的 GitLab 用户帐户的有限 CI 分钟数。
GitLab runner 依赖于 [executor][4] 工具来运行 CI 作业。executor 有许多选项可用Docker、Kubernetes、VirtualBox 等。
GitLab 执行器依赖于 <ruby>[执行环境][4]<rt>executor</rt></ruby> 工具来运行 CI 作业。执行环境有许多选项可用Docker、Kubernetes、VirtualBox 等。
那么Podman 作为 executor 呢?
那么Podman 作为执行环境呢?
自 [v4.2.0][5] 起Podman 对 GitLab runner 提供了原生支持。以下是使用 Podman 作为 GitLab runner 的 [executor][6] 的两种方法的快速浏览。
自 [v4.2.0][5] 起Podman 对 GitLab 执行器提供了原生支持。以下是使用 Podman 作为 GitLab 执行器的 [执行环境][6] 的两种方法的快速浏览。
### Docker executor
### Docker 执行环境
你可以在 GitLab Runner 中使用 Podman 作为 Docker 的直接替代品。就是这样:
你可以在 GitLab 执行器中使用 Podman 作为 Docker 的直接替代品。就是这样:
本示例使用 2023 年 2 月的 CentOS Stream 9 环境,使用 Podman v4.4.0。它应该可以在任何具有足够新的 Podman 的 RHEL/CentOS Stream/Fedora 环境中正常工作。查看 [GitLab 文档][7]了解先决条件。
本示例使用 2023 年 2 月的 CentOS Stream 9 环境,使用 Podman v4.4.0。它应该可以在任何具有足够新的 Podman 的 RHEL/CentOS Stream/Fedora 环境中正常工作。查看 [GitLab 文档][7] 了解先决条件。
首先,安装 Podman
@ -39,7 +43,7 @@ $ sudo dnf -y install podman
接下来安装 **gitlab-runner** 包:
```
# 添加 GitLab runner 仓库
# 添加 GitLab 执行器仓库
$ curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
# 安装 gitlab-runner 包
@ -52,9 +56,9 @@ $ sudo dnf -y install gitlab-runner
$ sudo loginctl enable-linger gitlab-runner
```
#### 配置并注册 runner
#### 配置并注册执行器
使用以下步骤配置 Docker executor
使用以下步骤配置 Docker 运行环境
安装 **gitlab-runner** 包会创建一个 **gitlab-runner** 用户帐户,但你需要 root 访问权限才能操作该用户帐户。**gitlab-runner** 可以在用户模式下运行,但需要一些手动干预来进行构建处理。在此示例中,我使用 `sudo` 在系统模式下运行它。它看起来是这样的:
@ -84,10 +88,9 @@ Runner registered successfully. Feel free to start it, but if it's running alrea
Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"
```
你将需要一些额外的配置才能使用 Podman。配置执行器为每个作业创建一个网络。有关更多信息请参阅 [GitLab 文档][8]。
你将需要一些额外的配置才能使用 Podman。配置 runner 为每个作业创建一个网络。有关更多信息,请参阅 [GitLab 文档][8]。
首先,启用 Podman 系统服务并修改 `/etc/gitlab-runner/config.toml` 中的 Env
首先,启用 Podman 系统服务并修改 `/etc/gitlab-runner/config.toml` 中的环境:
```
[[runners]]
@ -96,23 +99,23 @@ Configuration (with the authentication token) was saved in "/etc/gitlab-runner/c
host = "unix:///run/user/1001/podman/podman.sock"
```
重启 runner 以实施更改:
重启执行器以实施更改:
```
$ sudo gitlab-runner restart
```
验证新的 runner 在 GitLab 项目的 **设置** -> **CI/CD** -> **Runners** 中可见:
验证新的执行器在 GitLab 项目的 <ruby>设置<rt>Settings</rt></ruby> -> CI/CD -> <ruby>执行器<rt>Runners</rt></ruby> 中可见:
![Restart the GitLab runner][9]
接下来,验证你的 CI 管道正在使用 runner。你的 CI 任务日志将提及正在使用的 runner 的名称以及任何其他配置信息,例如 runner executor 的功能标志和容器镜像。
接下来,验证你的 CI 流水线正在使用执行器。你的 CI 任务日志将提及正在使用的执行器的名称以及任何其他配置信息,例如 执行器的执行环境的功能标志和容器镜像。
![View CI tasklogs to display the runner][10]
### Podman-in-Podmanpipglr
[Chris Evich][11] 创建了 [pipglr][12],这是一个 Podman-in-Podman 设置,用于使用 rootless Podman 来支持你自己的 rootless GitLab Runner。此方法不需要对 `.gitlab-ci.yaml` 配置进行任何更改,因此你可以继续按原样使用现有设置。
[Chris Evich][11] 创建了 [pipglr][12],这是一个 Podman-in-Podman 设置,用于使用免 root 的 Podman 来支持你自己的免 root 的 GitLab 执行器。此方法不需要对 `.gitlab-ci.yaml` 配置进行任何更改,因此你可以继续按原样使用现有设置。
以下是帮助你运行此程序的快速设置指南。
@ -130,25 +133,25 @@ $ IMAGE="registry.gitlab.com/qontainers/pipglr:latest"
$ echo '<actual registration token>' | podman secret create REGISTRATION_TOKEN -
```
创建一个空白的 `config.toml`,稍后将包含你的所有 runner 设置。你必须执行此步骤才能使以下 `podman container register runlabel $IMAGE` 步骤成功:
创建一个空白的 `config.toml`,稍后将包含你的所有执行器设置。你必须执行此步骤才能使以下 `podman container register runlabel $IMAGE` 步骤成功:
```
$ touch ./config.toml # 重要:文件必须存在,即使是空的。
```
注册你的 runner。你可以重复此步骤来注册多个 runner。如果你想使用可能不同的标签或配置选项集并行运行多个 CI 任务,这非常有用。
注册你的执行器。你可以重复此步骤来注册多个执行器。如果你想使用可能不同的标签或配置选项集并行运行多个 CI 任务,这非常有用。
```
$ podman container runlabel register $IMAGE
```
使用你选择的编辑器编辑 `config.toml`编辑是可选的,但通常需要更改用于实际 CI 任务的容器镜像。默认情况下,镜像设置为:**registry.fedoraproject.org/fedora:latest**
使用你选择的编辑器编辑 `config.toml`是可选的,但通常需要更改用于实际 CI 任务的容器镜像。默认情况下,镜像设置为:`registry.fedoraproject.org/fedora:latest`。
```
$ $EDITOR ./config.toml # if desired
```
最后,配置对卷的访问。容器卷内使用多个用户,因此你必须专门配置它们以允许访问。再次使用 runlabel 来完成:
最后,配置对卷的访问。容器卷内使用多个用户,因此你必须专门配置它们以允许访问。再次使用 `runlabel` 来完成:
```
$ podman container runlabel setupstorage $IMAGE
@ -156,34 +159,36 @@ $ podman container runlabel setupstorage $IMAGE
$ podman container runlabel setupcache $IMAGE
```
#### 测试 Runner
#### 测试执行器
是时候检查配置了。首先启动 GitLab Runner 容器:
是时候检查配置了。首先启动 GitLab 执行器容器:
```
$ podman container runlabel run $IMAGE
```
允许 runner 用户在注销后运行服务:
允许执行器用户在注销后运行服务:
```
$ sudo loginctl enable-linger $(id -u)
```
验证你的新 runner 在 GitLab 项目的 **设置** -> **CI/CD** -> **Runners** 中可见:
验证你的新执行器在 GitLab 项目的 <ruby>设置<rt>Settings</rt></ruby> -> CI/CD -> <ruby>执行器<rt>Runners</rt></ruby> 中可见:
![Verify the new runner is visible][13]
最后,验证你的 CI 管道正在使用你的 runner
最后,验证你的 CI 流水线正在使用你的执行器
![Verify the CI pipeline][14]
### 总结
使用 Podman 启动 GitLab runner 有多种方法,我在此处概述了其中两种。尝试一下,然后让我知道哪一个最适合你。如果 docker executor 方法有任何问题,请登录并通过 [Podman 上游][15]或 [GitLab 支持][16]提交问题。如果 pipglr 方法出现问题,请在 pipglr 上游[提交问题][17]。
使用 Podman 启动 GitLab 执行器有多种方法,我在此处概述了其中两种。尝试一下,然后让我知道哪一个最适合你。如果 Docker 执行环境方法有任何问题,请登录并通过 [Podman 上游][15] 或 [GitLab 支持][16] 提交问题。如果 pipglr 方法出现问题,请在 pipglr 上游 [提交问题][17]。
GitLab 与 Podman 一起运行愉快 🙂
*题图MJ/97e0ff4d-b769-4e20-990f-8c1e89e48434*
--------------------------------------------------------------------------------
via: https://opensource.com/article/23/3/podman-gitlab-runners
@ -191,7 +196,7 @@ via: https://opensource.com/article/23/3/podman-gitlab-runners
作者:[Lokesh Mandvekar][a]
选题:[lkxed][b]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
@ -213,4 +218,5 @@ via: https://opensource.com/article/23/3/podman-gitlab-runners
[14]: https://opensource.com/sites/default/files/2023-03/verify-CI-pipelines.png
[15]: https://github.com/containers/podman/issues/new/choose
[16]: https://about.gitlab.com/support/#contact-support
[17]: https://gitlab.com/qontainers/pipglr/-/issues/new
[17]: https://gitlab.com/qontainers/pipglr/-/issues/new
[0]: https://img.linux.net.cn/data/attachment/album/202308/24/093145pkr5rd2qqkmch6xv.jpg