2017-09-15 78 views
1

我在使用Gitlab-CI解析各個階段之間的build目錄時遇到問題。在gitlab-ci跑步中有不同失效時間的多個路徑

Gitlab-CI擦除階段之間創建的構建工件,這似乎很奇怪。我試圖在構建和測試階段之間存儲構建工件,但構建階段還有我想要保留的構建工件以及運行下一個階段所需的構建工件。

使用artifacts選項可以使用不同路徑有多個到期時間嗎?

我試過以下,它只保留paths(構建/測試*路徑)的第二個定義,而不是聲明的第一個paths(.dmg)。

artifacts: 
    paths: 
    - build/*.dmg 
    expire_in: 1 week 
    paths: 
    - build/test1 
    - build/test2 
    - build/test3 
    expire_in: 15 mins 

我已經使用caches但似乎無法得到那個工作嘗試...任何建議將是巨大的感謝!

回答

2

根據文檔,它似乎不可能,但我需要做一些類似的事情,所以我採取了一種解決方法。

在生成所有工件的生成階段中,我爲所有工件(包括應具有不同過期的工件)設置了15分鐘的到期時間。在你的情況build/*.dmg。所以我的構建部分的工件定義將如下所示:

artifacts: 
    paths: 
    - build/*.dmg 
    - build/test1 
    - build/test2 
    - build/test3 
    expire_in: 15 mins 

之後,我在管道的下一個階段定義了兩個作業。如果你這樣做,兩份工作同時運行。其中一項工作完成了您最初爲文件設計的目標:​​,build/test2build/test3。在這個管道階段的其他工作應該幾乎沒有什麼在腳本部分,可能類似echo "dummy job"

artifacts: 
    paths: 
    - build/*.dmg 
    expire_in: 1 week 

它:但由於虛擬工作從以前的任務接收生成工件,我們可以通過簡單地用相同的文件,像這樣創建第二個神器用它來「改變」的exoiry從15分鐘到一個星期是一個糟糕的解決方法,因爲它會複製目標工件,因爲我們將有一個過期15分鐘,另一個過期1周。

+0

感謝您的回答!你有沒有可能給更多的信息封裝呢?所以第一份工作創造了一個虛擬階段,然後構建的工作只有工件? – Rekovni

+1

我試圖更好地解釋我自己,我希望我現在更加連貫,英語是我的第二語言 –

+0

啊,我現在變了 - 謝謝:) – Rekovni