本エントリーでは
- VSTSのGitリポジトリにDockerfileを保存し
- VSTSで自動ビルドしたものを
- Azure Container Registryへプッシュする
方法を説明します。
前提条件
- Azure Container Registryが作成済みであること
- VSTSのログインユーザーがAzure Container Registryへのアクセス権を所持していること*1
Azure Container Registryの作成や利用方法は、以下もご覧ください。
VSTSへDockerfileを保存する
VSTSにプロジェクトを作成し、「Dockerfile」という名称のファイルを次のような内容で作成してください。
FROM alpine CMD echo Hello, World!
コンテナをビルドして実行すると「Hello, World!」と表示するコンテナになります。
ビルド定義を作成する
VSTSのプロジェクトをブラウザで開き、「Build and release」から「New definition」を選択します。
つづいて①「VSTS Git」を選び、②「Team Project」と③「Repository」を選択し、④ビルド対象のGitのブランチを選択した上で⑤「Continue」を押下します。
ビルドテンプレートから「Docker container」を選択します。
「Build an image」を選択し、今回はAzureのリポジトリに公開するので、「Container Registry Type」で「Azure Container Registry」を選択し、対象のAzureのSubscriptionを選択した上で、「Authorize」を押下します。なぜビルドでContainer Registryの情報を入力するかというと、すでにリリースされているイメージのタグ(バージョン)を取得するためだと思います。
その上で、アップロードするコンテナを選びます。
つづいて、「Push an image」タスクでも同じように、「Container Registry Type」「Azure Subscription」「Azure Container Registry」を選択します。
これで「Tasks」の設定は完了です。つづいて「Triggers」を設定します。
ここではmasterブランチが更新されたらCI/CDするように設定します。
「Triggers」を選択し「Enable continuous integration」をチェックします。これでGitリポジトリが更新された場合の自動ビルドが有効になります。その上で、自動ビルドするブランチをフィルタリングします。今回はmasterブランチが更新された場合に自動ビルドするように設定する為、デフォルトの設定のままとします。
「Save」すればCI/CDの設定は完了です。
CI/CDを実行する
では実際に動かしてみましょう。
Dockerfileを更新してリモートのGitリポジトリにプッシュします。Dockerfileをつぎのように変更してプッシュましょう。
FROM alpine CMD echo Hello, CI/CD!
VSTSのサイトを見てみましょう。つぎのように確かにビルドとContainer Registryへの配布が実行されているのが見て取れるでしょう。
Azureポータルも確認してみましょう。確かに「hello」コンテナが登録されています。
コンテナを取得して動かしてみる
では最後にAzure Container Registryから実際にコンテナイメージを取得して実行してみます。
コンテナからイメージをプルする方法はこちらを参考にしてください。
つぎのようにメッセージが表示され、確かにCI/CDが正しく動作していることが確認できるでしょう。
>docker run --rm hoge.azurecr.io/hello:1 Hello, CI/CD!
以上です。
*1:同一アカウントで行うか、適切に権限を付与する必要があります