须藤:找不到命令| gitlab-ci

时间:2021-01-17 16:28:33

标签: docker gitlab-ci sudo

我在我的简单项目中使用了 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?

1 个答案:

答案 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/