mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-23 21:20:42 +08:00
parent
1eedee818e
commit
f92d2e5c82
@ -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-Podman(pipglr)
|
||||
|
||||
[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
|
Loading…
Reference in New Issue
Block a user