2017-09-06 5 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です。私がリポジトリのTag Hooksを設定したので、Drone CIビルドが始まりますが、ビルドが完了し、レジストリにイメージを公開すると、タグは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押したときにトリガーされている、あなたは、タグイベントを使用する必要があります。

ヨは、あなたのタグを命名されているのでv1.0ドローンはネイルド

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

にこれを解析する

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

にメモを$ {DRONE_TAG ## V}接頭vを除去しますが、いくつかの同様の構成を持っている必要がありますそれ!それが私が必要としていたトリックでした。ありがとうございました! – BurtonR

+0

クール!しかし、なぜ誰かが '## v'がプレフィックスを取り除くことができる理由を説明できますか? –

+0

@SiruiZhuangここでdocsを参照してくださいhttp://docs.drone.io/substitution/、実際には任意のenv変数に適用することができ、特定のユースケースに依存します – jhernandez

関連する問題