簡體   English   中英

是否可以在 GitLab 的 CI 模式下不使用 _any_ Docker 映像?

[英]Is it possible to not use _any_ Docker image in CI mode for GitLab?

我有一個存儲庫,其中包含一系列文檔(multimarkdown 文件、PDF、GSN 參數等),需要使用我們的內部(當前)專有工具將這些文檔組裝成類似 HTML 的文檔。 內部工具使用起來相當復雜,而且(還)不能部署。

我嘗試做的是在 Ubuntu VM 上編譯我知道將用於這項工作的內部工具,然后在 GitLab(我們使用自托管的 GitLab)嘗試組裝文檔時不告訴 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 作業,你需要在你的 VM 上配置一個帶有“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將該鏡像用作構建環境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM