私は自己ホストシステムで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
にこれを解析する
にメモを$ {DRONE_TAG ## V}接頭
v
を除去しますが、いくつかの同様の構成を持っている必要がありますそれ!それが私が必要としていたトリックでした。ありがとうございました! – BurtonRクール!しかし、なぜ誰かが '## v'がプレフィックスを取り除くことができる理由を説明できますか? –
@SiruiZhuangここでdocsを参照してくださいhttp://docs.drone.io/substitution/、実際には任意のenv変数に適用することができ、特定のユースケースに依存します – jhernandez