我在我的简单项目中使用了 gitlab-ci。
一切正常,我的跑步者正在我的本地机器(ubuntu18-04)上工作,我用简单的 .gitlab-ci.yml 对其进行了测试。
现在我尝试使用以下 yml:
image: ubuntu:18.04
build-job:
stage: build
script:
- echo "Hello, $GITLAB_USER_LOGIN!"
- sudo apt-get update
但我收到以下错误:
/bin/bash: line 110: sudo: command not found
如何使用 sudo?
答案 0 :(得分:1)
您不必担心更新 Gitlab CI 管道作业中使用的 Ubuntu 映像,因为作业完成后 docker 容器将被销毁。此外,docker 镜像经常更新。如果您查看 ubuntu:18.04
的 docker hub 页面,它在 2 天前刚刚更新:https://hub.docker.com/_/ubuntu?tab=tags&page=1&ordering=last_updated
由于您正在此处进行更新,因此我假设接下来您可能想要安装一些软件包。这样做是可能的,但不建议这样做,因为您运行的每个管道都必须安装这些包,这确实会减慢它们的速度。相反,您可以基于父映像创建自定义 docker 映像并以这种方式对其进行自定义。然后,您可以将该 docker 映像上传到 docker hub、Gitlab 的注册表(如果使用自托管 Gitlab,则必须由管理员启用),或者在您的所有 gitlab-runner 上构建。
这是一个愚蠢的例子:
# .../custom_ubuntu:18.04/Dockerfile
FROM ubuntu:18.04
RUN apt-get install git
接下来您可以构建镜像:docker build /path/to/directory/that/has/dockerfile
,标记它以便您可以在管道配置文件中引用它:docker tag aaaaafffff59 my_org/custom_ubuntu:18.04
。然后,如果需要,您可以上传带标签的图片 docker push my_org/custom_ubuntu:18.04
。
在您的 .gitlab-ci.yml
文件中,引用此自定义 Ubuntu 映像:
image: my_org/custom_ubuntu:18.04
build-job:
stage: build
script:
- echo "Hello, $GITLAB_USER_LOGIN!"
- git --version # ensures the package you need is available
您可以在此处阅读有关在 Gitlab CI 中使用自定义图像的更多信息:https://docs.gitlab.com/charts/advanced/custom-images/