是否有可能在CI模式下不使用_any_ Docker镜像?



我有一个存储库,其中包含一系列文档(multimarkdown文件、pdf、GSN参数等),需要使用我们内部(目前)专有的工具将这些文档组装成一个类似html的文档。内部工具使用起来相当复杂,而且(目前)还不能部署。

我尝试做的是在Ubuntu VM上编译内部工具,我知道它将用于这项工作,然后不告诉GitLab(我们使用自托管GitLab)在试图组装文档时使用任何docker映像。唉,当CI作业运行时,我看到:

Pulling docker image alpine:latest ...

然后,当然,我在VM上安装的东西没有一个是可用的。

  1. 有没有办法让GitLab在没有任何Docker映像的情况下运行CI作业?
  2. 如果没有(或者如果这个替代方案只是简单的"更好"),那么阅读如何将这个复杂的内部工具安装到Docker映像中是一个很好的资源?

注:当前的"安装"方法复杂的内部工具,除了通过apt-get等安装包之外(我已经有了在Docker中如何做的例子),是克隆存储库,然后在克隆目录下运行npm installrake install

这是由您的GitLab-runner配置控制的。当运行器使用docker执行器时,它将总是使用docker映像进行构建。如果你想在不使用docker的情况下运行一个GitLab作业,你需要配置一个带有shell的GitLab运行器。


但是,使用image: ubuntu:focal或类似的方法就足够了。通常不必担心执行器碰巧在容器内运行作业。这也是有益的,因为这意味着您的构建环境是可复制的,并且该过程将在您的工作中定义。

myjob:
image: ubuntu:focal
script:
- apt update && apt install -y nodejs ruby # or whatever else
# - npm install
# - gem install
# - rake install
# etc...
- 

或者更好的是,如果你可以生成一个docker镜像,安装你的核心依赖,你可以在你的GitLab作业中使用image: my-special-image来使用这个镜像作为你的构建环境。

相关内容

最新更新