gitlab-ci
在.gitlab-ci.yml
文件中有一個選項用於在任何實際腳本運行之前執行命令,稱爲before_script
。 .gitlab-ci.yml
示例說明了在這裏安裝輔助程序。但是,我注意到,在使用Docker執行程序時,這些更改沒有在Docker中緩存。我天真地認爲在運行這些命令後,docker會緩存圖像,因此對於下一次運行或測試,docker只會加載在before_script
之後生成的緩存圖像。這將大大加速構建。Gitlab docker執行程序 - before_script之後的緩存圖像
舉個例子,我的.gitlab-ci.yml
看起來有點像:
image: ubuntu
before_script:
- apt-get update -qq && apt-get install -yqq make ...
build:
script:
- cd project && make
一個可能的解決方案是去跑步機,並創建可以在沒有任何其他安裝建立自己的軟件,然後引用它碼頭工人形象在yaml文件的image
部分。不利的一面是,無論何時我想添加一個依賴項,我都需要登錄到亞軍機器並在構建成功之前更新映像。如果我只需將依賴關係添加到apt-get install
的末尾並讓docker/gitlab-ci處理相應的緩存,那將會更好。
.gitlab-ci.yml
還有一個cache
命令,我試圖設置爲untracked: true
,我認爲它會緩存一切不是我的項目副產品,但它似乎沒有任何影響。
有什麼方法可以獲得我想要的行爲嗎?
我想到了這一點,並且還有一些好處,但是好像不會很難將'before_script'的每一行作爲RUN命令運行,然後讓docker在該級別執行高速緩存。 – Erik
是的,我認爲這是絕對有可能的,但是我最好的猜測是它接近我的答案,因爲如果你在不同的提交中有不同的'before_script'指令,事情會變得有點混亂。除了安裝軟件包之外,'before_script'還可以用來做各種各樣的事情。如果你好奇,你可以在他們的github頁面上發佈。他們非常善於迴應。儘管如此,我發佈的內容已經爲我們的團隊服務。 – Suever
我將與你所描述的事情一起工作。 – Erik