2017-09-06 86 views
0

我在自主系統中使用Drone CI(0.7)。它吸引了GitLab和我的私人註冊表,並且工作得很好!Drone CI獲取並使用構建元數據

但是,我想用.drone.yml文件做更多。尤其是將圖像發佈到註冊表時。

該文檔顯示如何執行substitution,但並未解釋如何設置這些變量。下面是一個文檔示例:

pipeline: 
    docker: 
    image: plugins/docker 
+ tags: ${DRONE_TAG} 

這正是我想要做的。在repo上(在發佈分支上)創建一個git標籤,並讓該標籤成爲我的Docker鏡像的標籤。

我試過git tag -a v1.0 -m "Initial release"然後git push origin v1.0。無人機CI構建開始,因爲我已經爲存儲庫設置Tag Hooks,但是當構建完成並將映像發佈到註冊表時,標記將設置爲latest。推送常規代碼更改提交時也會發生這種情況。

這是需要使用CLI完成的事情,還是我在我的.drone.yml文件中丟失了某些內容(發佈如下)?它看起來像像一個環境變量,我將需要設置,但似乎很奇怪必須在提交代碼開始構建之前設置(我假設)...

任何和所有的幫助表示讚賞!

pipeline: 
    build: 
    image: node:latest 
    commands: 
     - npm install 
     - npm test 
    docker: 
    image: plugins/docker 
    repo: private.registry.com/tester 
    registry: private.registry.com 
    secrets: [ docker_username, docker_password ] 
    tags: ${DRONE_TAG} 
    when: 
     branch: release 

回答

0

其實你docker步驟只被當你推一個新的提交到分支release觸發,你應該使用標籤事件。

呦應該有一些類似的配置

tags: 
    - latest 
    - ${DRONE_TAG##v} 
when: 
    event: tag 

筆記$ {DRONE_TAG ## V}將去掉前綴v,因爲你命名你的標籤v1.0無人機將解析到這個

tags: 
    - latest 
    - 1.0 
when: 
    event: tag 
+0

釘支護它!那是我需要的技巧。謝謝! – BurtonR

+0

酷!但任何人都可以解釋爲什麼'## v'可以去掉前綴? –

+0

@SiruiZhuang在這裏看到文檔http://docs.drone.io/substitution/,實際上它可以應用於任何env變量,它將取決於您的特定用例 – jhernandez