我有一个存储库,其中包含一系列文档(multimarkdown文件、pdf、GSN参数等),需要使用我们内部(目前)专有的工具将这些文档组装成一个类似html的文档。内部工具使用起来相当复杂,而且(目前)还不能部署。
我尝试做的是在Ubuntu VM上编译内部工具,我知道它将用于这项工作,然后不告诉GitLab(我们使用自托管GitLab)在试图组装文档时使用任何docker映像。唉,当CI作业运行时,我看到:
Pulling docker image alpine:latest ...
然后,当然,我在VM上安装的东西没有一个是可用的。
- 有没有办法让GitLab在没有任何Docker映像的情况下运行CI作业?
- 如果没有(或者如果这个替代方案只是简单的"更好"),那么阅读如何将这个复杂的内部工具安装到Docker映像中是一个很好的资源?
注:当前的"安装"方法复杂的内部工具,除了通过apt-get等安装包之外(我已经有了在Docker中如何做的例子),是克隆存储库,然后在克隆目录下运行npm install
和rake 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
来使用这个镜像作为你的构建环境。