概要
Jenkins の Docker Plugin を使って Jenkins から Dockerfile をビルドしてみました
基本的には前回の設定をそのまま使って行います
環境
- Docker
- CentOS 7.3.1611
- Docker 1.12.6
- Jenkins
- CentOS 6.7 64bit
- Jenkins 2.10
- Docker Plugin 0.16.2
設定
ジョブを新規で作成して Github から取得した Dockerfile をビルドします
- ソースコード管理 -> git
で Github の URL を入力します
もちろん Dockerfile が存在するリポジトリを選択してください
- ビルド -> ビルド手順 -> Build / Publish Docker Containers
を選択します
以下の内容を入力します
- Directory for Dockerfile・・・./
- Cloud・・・test-docker-server
- Image・・・hawksnowlog/request-dumper
Cloud の部分は前回設定した「システムの設定」->「クラウド」に追加した Docker 情報の Name になります
設定はこれで完了でジョブを実行してみましょう
動作確認
まずジョブが問題なく完了することを確認してください
コンソール出力には docker build の結果がデバッグログが表示されていると思います
また、docker ホストにログインしてイメージの一覧を確認するとジョブによって作成されたイメージが存在することが確認できると思います
- docker images | grep hawksnowlog
hawksnowlog/request-dumper latest e3923949379a 6 minutes ago 735.9 MB
Tips
ちょっと Plugin の挙動の補足をしておきます
--no-cache=false
で動作しているようです、これはジョブの設定からは変更することができなようです
なのでリソースが変更されていない状態だとすべてキャッシュを使ってイメージを作成するため超速です
試しに 2 回ジョブを実行してみると 2 回目はすぐに終了すると思います
タグ名に動的な値を入れることができない
今回だと hawksnowlog/request-dumper というタグにしています
キャッシュを使わず再ビルドが走ると新しいイメージに設定したタグが振られ古いイメージは <none>
になってしまいます
一応 Jenkins 側のログに作成したイメージの ID が残るのでどのリソースから作成されたイメージから追うことはできますが <none>
イメージが増えてしまうのはあまりうれしくはないと思います
なので、動的にタグ名が触れるといいのですがジョブの設定でビルド番号の変数などが使えなさそうだったので、どうするのだろうかなと思った次第です
最後に
Jenkins の Docker Plugin を使って Dockerfile 自体のビルドを行ってみました
これでリポジトリに push があった場合に、Dockerfile のビルドも自動で行うことができるようになると思います
あとは新規で作成したイメージから再度コンテナを作成すれば OK です
その辺の自動化も検証できたら紹介したいと思います
0 件のコメント:
コメントを投稿