2016-11-22 92 views
4

我的目標是能夠使用councourse構建管道構建,打包和測試使用maven構建的java項目。如何緩存構建之間的Maven倉庫?

這樣的設置已經就緒,並且一切運行正常,但由於我們的連接可靠的maven下載速度,構建時間太長。

我的構建工作陽明文件使用以下資源作爲基礎的Maven構建:

# ... 
image_resource: 
    type: docker-image 
    source: 
    repository: maven 
    tag: '3.3-jdk-8' 
# ... 

我知道的一個事實,即有一個「空白的石板」爲每buils被設計somwhat建成廣場。

現在我的問題是:什麼是緩存本地maven存儲庫的好方法(比如說,至少有一些像Spring這樣的基本東西以及它的依賴關係)?

以下選項來我的腦海:

  1. 使用具有依賴性內置已經
  2. 創建的ressource提供我所需的依賴

至於碼頭工人形象我可以看到,選項1)不會使構建的下載大小更小,因爲大廳似乎不會緩存用作構建作業基礎的泊塢窗圖像(或者我在這裏是否有錯誤?)

在我繼續之前,我想確保下面的選項2)給了我任何優勢 - 作爲資源使用中央緩存泊塢窗圖像嗎?

我可能會錯過一些事情,因爲我對議會比較陌生。所以請原諒我,如果我強迫你在這裏陳述明顯的話。 :)

回答

4
  • 假設你的Nexus是本地的,我會研究爲什麼有不好的下載速度,因爲在本地使用像Nexus和Artifactory這樣的東西是當前最容易的緩存方式。他們將管理緩存依賴項的生命週期,以便您不再需要緩存更長時間的依賴項以滿足需要,並且可以在使用新依賴項時添加新依賴項。
  • 如果您只想緩存一個作業,然後output任務的緩存依賴項文件夾(.m2文件夾),並將其用作另一個任務的input
  • 如果你想工作之間的緩存,那麼你可以:
  • 正在討論內置執行緩存的方法here

我覺得大堂CI不用於任務緩存泊塢窗的圖像,而且還可以讓他們爲您的管道的資源,然後使用任務的image參數傳遞的資源。您可以看到使用flyvolumes命令緩存的內容和多長時間。

+0

大,感謝話題的廣泛covereage - 當我問這樣一個廣泛的問題時,這是非常令人興奮的:)我最終建立了一個單獨的管道,它構建了一個基礎映像,用於執行構建,並帶有預填充的本地Maven存儲庫。在我的情況下,這大大加快了速度:從每個構建10分鐘降低2分鐘。 – sschuth

+2

@sschuth the concourse團隊剛剛發佈了一篇關於爲Ruby gems做這件事的[博客文章](http://engineering.pivotal.io/post/concourse-docker-image-resource-cache-tutorial/)。 – materialdesigner

0

我可以確認,中心確實在緩存泊塢窗圖像,因此創建具有所有依賴關係的圖像可能不是一個錯誤的選項。

+0

是的,我現在可以確認用於任務的泊塢窗圖像緩存起作用。 – sschuth