您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

如何在 GitLab 执行器中使用 Podman

时间:2023-08-25 12:05:12  来源:今日头条  作者:硬核老王

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

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

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

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

GitLab 执行器依赖于 执行环境executor 工具来运行 CI 作业。执行环境有许多选项可用:Docker、Kube.NETes、VirtualBox 等。

那么,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 中可见:

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

 

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 '

创建一个空白的 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 中可见:

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

 

总结

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

GitLab 与 Podman 一起运行愉快



Tags:GitLab   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
如何在 GitLab 执行器中使用 Podman
使用 Podman 启动 GitLab 执行器有多种方法,我在本文中概述了其中两种。GitLab 执行器Runner 是一个与 GitLab CI/CD 配合使用的应用,可在 GitLab 基础设施上的流水线中运行作...【详细内容】
2023-08-25  Search: GitLab  点击:(293)  评论:(0)  加入收藏
使用 GitLab 的 Terraform CI/CD 管道
使用 GitLab 管道部署 Terraform 为管理基础设施提供了一个安全、无缝的过程,从而实现更快、更高效的部署。基础设施即代码 (IaC) 是现代 DevOps 和敏捷团队一致、高效地管理...【详细内容】
2023-05-17  Search: GitLab  点击:(405)  评论:(0)  加入收藏
服务中断、系统宕机...GitLab崩了怎么办?
创新式的开发对于码农来说往往是一项艰巨的“修行”任务。每个GitLab用户都或多或少地认识到,源代码对于保障DevOps团队能够不间断地开展工作流程的重要性。...【详细内容】
2022-11-18  Search: GitLab  点击:(246)  评论:(0)  加入收藏
python + selenium实现gitlab全文搜索
一般来说软件开发相关企业都会有自己内部的源代码管理工具,比如私有部署的gitlab服务器。特别是企业上规模之后会有多个产品线,各个业务产品线各自的项目解决方案会非常多。以...【详细内容】
2022-11-16  Search: GitLab  点击:(290)  评论:(0)  加入收藏
GitLab 禁用 Windows
作为 GitHub 的重要竞争对手,GitLab 自成立以来就一直与其在源码库市场上进行争夺。尤其当微软在 2018 年以 75 亿美元收购了 GitHub 后,GitLab 便适时推出了迁移功能,使许多开发者纷纷转向 GitLab,GitLab 由此迅速成长,于...【详细内容】
2022-08-09  Search: GitLab  点击:(369)  评论:(0)  加入收藏
GitLab 技术选型为何不同:坚持用 Web 框架十多年、坚决不用微服务
关于过气网红编程语言 Ruby,我们此前曾发过一篇文章去回顾其大受追捧的过往,并讨论了它每况愈下的生存状态。不过人气并不能直接说明语言质量差,一方面 Ruby on Rails(用 Ruby...【详细内容】
2022-07-08  Search: GitLab  点击:(264)  评论:(0)  加入收藏
CentOS安装部署GitLab服务器
安装依赖yum -y install policycoreutils openssh-server openssh-clients postfix设置postfix开机启动并启动systemctl enable postfix && systemctl start postfix下载Gi...【详细内容】
2022-05-24  Search: GitLab  点击:(357)  评论:(0)  加入收藏
git、github、gitlab有什么区别?
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。这是官方解释,结合自己经验来说,一般在不大不小的公司里,开发的大佬提交代码就是用这...【详细内容】
2022-04-11  Search: GitLab  点击:(347)  评论:(0)  加入收藏
本地新项目如何推送到gitlab仓库
一、背景介绍很多时候我们都是在gitlab上拉取现有的项目下来做开发。但是假设一个新项目由你来搭建项目框架,你本地新建项目,也搭好了初始化的项目框架。现在需要把这个项目放...【详细内容】
2022-03-21  Search: GitLab  点击:(678)  评论:(0)  加入收藏
GitHub还是GitLab?谈谈两者的区别
【CSDN 编者按】开发人员在开发编程项目时可能会面临这样一个问题,GitHub和GitLab各有优缺点,用哪一个更好呢?那么今天我们就来简单介绍一下GitHub和GitLab并谈谈它们各自的优...【详细内容】
2022-03-10  Search: GitLab  点击:(70)  评论:(0)  加入收藏
▌简易百科推荐
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(5)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(12)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(8)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(10)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(8)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
Kubernetes 究竟有没有 LTS?
从一个有趣的问题引出很多人都在关注的 Kubernetes LTS 的问题。有趣的问题2019 年,一个名为 apiserver LoopbackClient Server cert expired after 1 year[1] 的 issue 中提...【详细内容】
2024-03-15  云原生散修  微信公众号  Tags:Kubernetes   点击:(6)  评论:(0)  加入收藏
站内最新
站内热门
站内头条