2017-01-01 153 views
1

我已經在本地設置了drone.io併爲CI構建創建了一個.drone.yml。但是我發現無人機在完成構建之後移除碼頭集裝箱。它是否支持重用碼頭集裝箱?我正在開發Gradle項目,初始構建需要很長時間才能下載Java依賴項。drone.io是否支持重複使用Docker容器進行構建

UPDATE1

我用以下命令來設置上運行的雄蜂服務器容器管理用戶。

docker run -d \ 
    -e DRONE_GITHUB=true \ 
    -e DRONE_GITHUB_CLIENT="xxxx" \ 
    -e DRONE_GITHUB_SECRET="xxxx" \ 
    -e DRONE_SECRET="xxxx" \ 
    -e DRONE_OPEN=true \ 
    -e DRONE_DATABASE_DRIVER=mysql \ 
    -e DRONE_DATABASE_DATASOURCE="root:[email protected](mysql:3306)/drone?parseTime=true" \ 
    -e DRONE_ADMIN="joeyzhao0113" \ 
    --restart=always \ 
    --name=drone-server \ 
    --link=mysql \ 
    drone/drone:0.5 

這樣做後,我用的是用戶joeyzhao0113登錄無人機服務器,但未能啓用該設置頁面上的Trusted標誌。彈出消息對話框顯示設置成功見下面的截圖。但國旗總是顯示禁用。

enter image description here

回答

5

不,這是不可能重新使用您的無人機建造一個碼頭工人的容器。構建容器是短暫的,並在每次構建結束時被銷燬。

這就是說,這並不意味着你的問題無法解決。

我認爲更好的方式來說這個問題將是「我如何防止我的版本不得不重新下載依賴項」?有兩個解決這個問題的方法。

選項1,緩存插件

第一,推薦的解決方案,是使用插件來緩存和恢復您的依賴。緩存插件,如volume caches3 cache是社區貢獻的插件。

pipeline: 
    # restores the cache from a local volume 
    restore-cache: 
    image: drillster/drone-volume-cache 
    restore: true 
    mount: [ /drone/.gradle, /drone/.m2 ] 
    volumes: 
     - /tmp/cache:/cache 

    build: 
    image: maven 
    environment: 
     - M2_HOME=/drone/.m2 
     - MAVEN_HOME=/drone/.m2 
     - GRADLE_USER_HOME=/drone/.gradle 
    commands: 
     - mvn install 
     - mvn package 

    # rebuild the cache in case new dependencies were 
    # downloaded during your build 
    rebuild-cache: 
    image: drillster/drone-volume-cache 
    rebuild: true 
    mount: [ /drone/.gradle, /drone/.m2 ] 
    volumes: 
     - /tmp/cache:/cache 

選項2,自定義圖片

第二個解決方案是創建你的依賴碼頭工人的形象,發佈到DockerHub,並在.drone.yml文件中使用此作爲構建圖像。

pipeline: 
    build: 
    image: some-image-with-all-my-dependencies 
    commands: 
     - mvn package 
+0

我檢查了緩存插件,它說:'緩存的文件或目錄必須位於您的構建工作區中。無法在構建工作區外緩存文件。'。構建工作空間是否意味着git存儲庫?緩存的數據將位於git存儲庫之外的〜/ .m2和〜/ .gradle目錄中。如何實現這個緩存? –

+0

假設您沒有覆蓋默認的基礎值,默認的工作空間基礎是'/ drone'。這意味着您可以設置'GRADLE_USER_HOME =/drone/.gradle'來指示gradle將依賴關係存儲在您的工作空間中,以供緩存插件訪問。我已經更新了我的答案中的示例,以說明這可能如何工作。 –

+0

我得到這個錯誤'錯誤:沒有足夠的權限來使用卷'。如何在無人機中設置權限以使用卷? –

相關問題