この記事の目的
この記事では、
Azure DevOpsでCDの設定をした時のまとめ
を目的としています。
本題
★やりたいこと概要
「CI/CD」のことはじめとして、①「Visual Studio からGitサーバーにPushした」とき、「②サーバー側でソリューションをビルド」し、「③DockerfileをつかってDockerImageもビルド」し、「④Azure Container RegistryにPush」するところまでをAzure DevOpsを使ってやってみたいと思います!
いろいろな発表や資料をみて、やれることはわかっているつもりなのですが、実際にどうやってやるかわかっていないので、整理しつつやり方を学んでいこうと思います。この仕組みがうまく身についたら、個人的に開発しているプレゼンテーションアプリをCI/CDしてあげたいと思いますw
★DevOpsでプロジェクトを作成
まずは、プロジェクトを作成します。プロジェクトは、Organization配下に20?くらい作れるそうです。Organizationを作ってないよという時は、図の左下の方の「New Organization」から作成する必要があります。
「Create」ボタンを押下し、しばらくするとプロジェクトが完成します。
★Reposの設定
Azure DevOpsのReposにASP.NET Core のMVCテンプレートをPushしていきます。基本的には、GitHubと同じような操作になります。前にまとめておいたのが役に立ちそうですw
www.kinakomotitti.net
ReposのURLは以下のように取得することができます。
作成したプロジェクトは以下のような設定です。図中で、ソリューションのフォルダを作成するのチェックボックスをあえて外しているのは、ただの趣味です。この後の作業に何も影響ないので、チェックしたままでもよいはずです。
プロジェクトが正しくPushできると以下のようになります。
★Piplineの設定
いよいよ、Build Piplineの設定を行っていきます。
注意点その1:COPY failed: stat /var/lib/docker/tmp/docker-builder936381234/WebApi/WebApi.csproj: no such file or directoryt 的なエラーが発生する。
→Docker Contextオプションがデフォルトのままになっているためのエラー。
設定を変更し、任意のパスを指定する必要がある。
stackoverflow.com
注意点その2:Image名はBuild時とPush時で同じ名前になるように定義する。
→当たり前ですが、BuildしたときのImage名と、PushするときのImage名の定義をそろえておかないと、Pushに失敗します。特に、任意のImage名の定義をする場合に注意です。自分はここで失敗しました。
ここまでの設定がうまく完了すると、Piplineを開始(Queue)すると、Azure のContainer RegistryにImageがPushされます!
★CIの有効化と実行
いよいよCI?を実行していきます。CIを実行するためにも、CIを有効化する必要があります。
ここまでで、各種設定は一通り完了です。動作確認のため、Visual Studio でコードをちょっと修正して、コミット→Pushまでを実行します。すると、Azure DevOpsのBuildsページにて、先ほど設定したBuildタスクが実行されていることが確認できます。
まとめ
今回は、Docker Containerテンプレートを使って、Azure Container RegistryにPushするところまでのCI設定手順をまとめました。まだ、テストとか、K8sへのデプロイとかいろいろやりたいことが残っているので、継続的に調査を進めていこうと思います(/・ω・)/
(´▽`)そういえば、サーバーでのビルドやってない気がする・・・