[英]How to use docker inside Alpine/Any docker image in gitlab ci
[英]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 本身上安裝的所有東西都不可用。
注意:目前“安裝”復雜的內部工具的方法,除了通過 apt-get 等大量安裝包(我已經有如何在 Docker 中執行的示例)之外,是克隆存儲庫,然后在克隆目錄中運行npm install
和rake 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.