Docker 使用GitLab CI构建Singularity容器

Docker 使用GitLab CI构建Singularity容器,docker,continuous-integration,gitlab-ci,virtualization,singularity-container,Docker,Continuous Integration,Gitlab Ci,Virtualization,Singularity Container,我想在GitLab CI中构建一个奇点图像。不幸的是,该计划失败的原因是: Running with gitlab-runner 13.5.0 (ece86343) on gitlab-ci d6913e69 Preparing the "docker" executor Using Docker executor with image quay.io/singularity/singularity:v3.7.0 ... Pulling docker image quay.i

我想在GitLab CI中构建一个奇点图像。不幸的是,该计划失败的原因是:

Running with gitlab-runner 13.5.0 (ece86343) on gitlab-ci d6913e69
Preparing the "docker" executor
Using Docker executor with image quay.io/singularity/singularity:v3.7.0 ...
Pulling docker image quay.io/singularity/singularity:v3.7.0 ...
Using docker image sha256:46d3827bfb2f5088e2960dd7103986adf90f2e5b4cbea9eeb0b0eacfe10e3420 for quay.io/singularity/singularity:v3.7.0 with digest quay.io/singularity/singularity@sha256:def886335e36f47854c121be0ce0c70b2ff06d9381fe8b3d1894fee689615624 ...
Preparing environment
Running on runner-d6913e69-project-2906-concurrent-0 via <gitlab.url>...
Getting source from Git repository
Fetching changes with git depth set to 50...
Reinitialized existing Git repository in <repo-path>
Checking out 708cc829 as master...
Skipping Git submodules setup
Executing "step_script" stage of the job script
Error: unknown command "sh" for "singularity"
对我来说,GitLab似乎试图使用一个不存在的shell?他们应该如何工作?实际上,他们正在使用一个名为
-gitlab
的docker映像的特殊版本,但不幸的是,该版本不再可用。有什么想法吗?我无法想象在CI中构建奇点容器是不可能的?提前多谢

编辑:根据@tsnowlan的回答,覆盖入口点修复了上述问题。但是,现在生成失败,原因是:

singularity build semrepro-singularity.sif semrepro-singularity.def
INFO:    Starting build...
INFO:    Downloading library image
84.1MiB / 84.1MiB [========================================] 100 % 28.7 MiB/s 0s
ERROR:   unpackSIF failed: root filesystem extraction failed: extract command failed: ERROR  : Failed to create user namespace: not allowed to create user namespace: exit status 1
FATAL:   While performing build: packer failed to pack: root filesystem extraction failed: extract command failed: ERROR  : Failed to create user namespace: not allowed to create user namespace: exit status 1
Cleaning up file based variables
ERROR: Job failed: exit code 1

有什么想法吗?

你需要稍微弄虚作假,让它与gitlab CI配合使用。我找到的最简单的方法是关闭docker入口点,让脚本步骤成为完整的singularity build命令。我们使用它来构建v3.6.4版的奇点图像,但它也应该适用于v3.7.0版

e、 g

构建奇点:
图片:
名称:quay.io/singularity/singularity:v3.7.0
入口点:[“”]
阶段:奇点
脚本:
-奇点构建复制/管道/semrepro奇点/semrepro-singularity.sif复制/pipeline/semrepro-singularity/semrepro-singularity.def
...

编辑:使用的gitlab运行程序还必须启用
特权
。这是上的默认设置,但如果使用自己的跑步者,则需要确保在他们的配置中设置了此设置。

非常感谢!事实上,这修复了建筑甚至无法启动的初始问题!然而,它遇到了另一个问题,这是我以前在尝试自制docker图像时遇到的。我认为这可能是我的定制docker问题的一个问题,但显然不是。生成失败,错误为:解包SIF失败:根文件系统提取失败:提取命令失败:错误:无法创建用户命名空间:不允许创建用户命名空间。有什么想法吗?我忘了苏多。使用它,它应该工作。不,它应该以root用户身份运行。那是奥达哈,是的,我想是的。我们运行自己的gitlab运行程序,这些运行程序使用
——privileged
。虽然看起来共享的运行程序也应该是:啊,如果您在托管实例上运行,那么在他们在运行程序上启用特权模式之前,您的运气会很差。对docker中的docker或docker中的奇点来说,这是一个很难满足的要求
singularity build semrepro-singularity.sif semrepro-singularity.def
INFO:    Starting build...
INFO:    Downloading library image
84.1MiB / 84.1MiB [========================================] 100 % 28.7 MiB/s 0s
ERROR:   unpackSIF failed: root filesystem extraction failed: extract command failed: ERROR  : Failed to create user namespace: not allowed to create user namespace: exit status 1
FATAL:   While performing build: packer failed to pack: root filesystem extraction failed: extract command failed: ERROR  : Failed to create user namespace: not allowed to create user namespace: exit status 1
Cleaning up file based variables
ERROR: Job failed: exit code 1