今回は Microsoft が公開している Azure DevOps Demo Generoter を使用して、YAML Pipeline を試してみます。Azure DevOps の Demo Generater のサンプルコード は以下のページからダウンロードすることが可能です。
Get started using the Demo Generator V2 now
この記事では、コードのクローンと、YAML の簡単な部分を変更してみて実際にビルドが成功するか否かを試してみたいと思います。
準備 : Code の Clone から VS との Git まで
まずは上述の Code Generator からサンプルをダウンロードします。方法は非常に簡単で、ローカルにコードを明示的にダウンロードする必要はなく、Demo Generator のページから自分の DevOps プロジェクトを選択してテンプレートを選択するのみです。
今回のデモでは、「Parts Unlimited」のテンプレートを使用して、あらかじめ作成した「komiyasaVal」というプロジェクトにクローンします。
数分でテンプレートのクローンが終了するので、次はクローンしたコードを自身のローカル環境にクローンしてみます。プロジェクトの Repos メニューに行くと右上に「Clone」ボタンがあるのでそれを押してみましょう。デフォルトで Clone to VS Code となっていると思いますがこれだと VS Code にクローンしてしまうので、メニューから Clone to Visual Studio を選択します。
しばらくするとVisual Studio 側に Azure DevOps の Repo の中に入っているものがクローンされます。これで準備は完了です。
YAML Pipeline を使用してビルドをする
まずは Azure DevOps の Pipeline から新しい Pipeline を作成します。オプションは Azure Git repos を選択します。最初はデフォルトのまま進みましょう。いくつか進むと、YAML のオプションを選択するページにたどり着きます。ここが今回の記事の肝です。
YAML では ビルドのオプションを細かく指定することが可能です。例えば Trigger を設定したり、Pool を指定したりすることができます。今回のビルドでは、Pool を VS 2017 環境で実施すると仮置きし、以下のコードを追加します。
pool:
name: Hosted VS2017
demands:
- msbuild
- visualstudio
- vstest
これで一回 Save をします。すると自動的にビルドが走ります。最初のビルドは特に時間がかかりますが、5分くらいでビルドは終了します。正常に成功すると、ビルドの内容が、TESTS タブから確認することが出来ます。
次は、YAML を色々いじってみます。再び Pipeline に戻ると左側のメニューから Tasks を追加するとができるようになっています。今回は試行として「Publish Build Artifacts」を追加します。これを追加することによって、ビルドのタスクを一つ追加することが出来ます。
実際にビルドされた内容を見てみると、先ほど追加した Tasks が追加されていることが分かります。
YAML を使用することで、DevOps のデプロイオプションを簡単に指定することの他、Container との連携や、デプロイする環境の指定もできるため非常に便利です。デプロイオプションを YAML で管理するという習慣をつけておくことで、様々なアプリケーションを一括の環境で一貫して管理することもできるのでとても便利ですね!色々な用途があると思いました。
参考
About the Azure DevOps Services Demo Generator
https://docs.microsoft.com/en-us/azure/devops/demo-gen/?view=azure-devops
Visual Studio Test task
https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/test/vstest?view=azure-devops
Publish Test Results task
https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/test/publish-test-results?view=azure-devops&tabs=yaml
Get started creating and populating demo Azure DevOps Services projects
https://docs.microsoft.com/en-us/azure/devops/demo-gen/use-demo-generator-v2?view=azure-devops