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

sudo: command not found | gitlab-ci

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

您不必担心更新 Gitlab CI 管道作业中使用的 Ubuntu 图像,因为 docker 容器在作业完成时被销毁。此外,docker 图像经常更新。如果您查看 ubuntu:18.04 的 docker 中心页面,它在 2 天前刚刚更新:https://hub.docker.com/_/ubuntu?tab=tags&page=1&ordering=last_updated

由于您在这里进行更新,我假设接下来您可能想要安装一些软件包。可以这样做,但不建议这样做,因为您 运行 的每个管道都必须安装这些软件包,这确实会减慢它们的速度。相反,您可以根据父图像创建自定义 docker 图像并以这种方式对其进行自定义。然后你可以将该 docker 图像上传到 docker hub,Gitlab 的注册表(如果使用自托管的 Gitlab,它必须由管理员启用),或者构建在你所有的 gitlab-运行人。

这是一个愚蠢的例子:

# .../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/