Azure DevOps Projects にも役立つ! Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド & リリース機能の仕組みを解説 AD27
セッション概要 VSTS / TFS 上での CI / CD パイプライン構築に役立つノウハウや考え方をご紹介します Build 2018 でアナウンスされたアップデートも紹介 Visual Studio Team Services Team Foundation Server 2018 Update 2 2
Agenda ビルド機能とリリース機能を使った CI/CD 王道パターン エージェントの挙動解説 エラー発生時の対処指針 3
お願い シャッター音はご遠慮ください セッションスライドのダウンロード先 https://decode18.blob.core.windows.net/ad27/ad27.pptx ご理解 ご協力よろしくお願いします! 4
ビルド機能とリリース機能を使った CI/CD 王道パターン 5
構成例 (1) ASP.NET アプリを Azure Web Apps + SQL Database にデプロイ ビルド機能リリース機能 VSTS 6
構成例 (2) Java アプリを Web Apps for Containers にデプロイ ビルド機能リリース機能 Azure Container Registory 7
王道構成 成果物発行までをビルド機能 それ以降をリリース機能で構成 リポジトリ ビルド機能 リリース機能 VSTS/TFS TFVC Git 外部 Git GitHub Enterprise Subversion GitHub * Bitbucket Cloud * * VSTS のみサポート 8 VSTS / TFS 外部サービス
王道構成の背景 成果物に関する機能は ビルド機能とリリース機能で棲み分け エージェント タスク ビルド機能 9 リリース機能 共通 変数グループ 定義済み変数 テンプレート ビルド専用 リリース専用 ソースコードの取得 ソースコード品質チェック 成果物の発行 成果物の取得 ワークフロー ( 承認など )
成果物発行 タスク ビルドの一番最後での実行を推奨 ビルド機能のみ有効 リリース機能ではエラーとなる 外部サービスに成果物発行する場合は使用しない 10
成果物の取得 VSTS / TFS ビルド実行 TFVC / Git Package Management 外部サービス Jenkins GitHub Azure Container Registry Docker Hub 11
ビルド機能とリリース機能は同じ実行基盤 自由度が高すぎるパイプライン作成が可能になっている エージェント タスク ビルド機能 12 リリース機能 共通 変数グループ 定義済み変数 テンプレート ビルド専用 リリース専用 ソースコードの取得 ソースコード品質チェック 成果物の発行 成果物の取得 ワークフロー ( 承認など )
ビルド機能だけで CI/CD 構成はだめなのか? リリース機能のみ利用可能なワークフロー 承認 パイプライン処理 ( 環境の並行実行含む ) リリースゲート : デプロイ後の環境での評価が可能 13
リリース機能だけで CI/CD 構成はだめなのか? 定義済み変数がビルド機能とリリース機能で異なる ビルド機能で利用可能な以下テンプレートが使用不可.NET デスクトップ ASP.NET ASP.NET Core ASP.NET Core (.NET Framework) Universal Windows Platform コンテナーコンテナー付きの ASP.NET Android Xamarin.Android Xamarin.iOS Xcode Azure Cloud Services Azure IaaS 仮想マシンを使用したロードテスト Azure Service Fabric アプリケーション Azure Service Fabric アプリケーション (Docker) Azure Web アプリ / Java 用 Azure Web アプリ Ant / Maven Gradle Jenkins Node.js (Grunt 使用 ) Node.js (gulp 使用 ) Go (VSTS のみ ) 14
エージェントの挙動解説 15
ビルド リリース実行場所 VSTS 上ではない Hosted Agent のあるマシン上で実行 外部サービスとの連携の場合は エージェントが動いているマシンと連携できることを予め確認 VSTS 成果物 パブリック環境 Hosted コード Agent マシン プライベート環境 成果物成果物 16
Hosted Agent とプライベートエージェント Hosted Agent: マイクロソフト提供 VSTS 専用エージェント Windows 環境では Hosted VS 2017 がデフォルト Hosted Linux / Hosted macos はプレビューとして提供 プライベートエージェント : 自前のマシンを利用する際に使用 Hosted Agent にない環境で実行する必要がある場合 環境固定したい場合 イントラネットの環境上でのビルド リリース実行場合 17
タスクの正体 ビルド リリース実行されるマシン上にスクリプトがダウンロード 設定したパラメーターがスクリプト上で読み込まれて実行 成果物発行 タスクの例 publishbuildartifacts.js 18
変数 (Variable) 複数の設定での同時ビルド リリースの際にも活用 変数定義 Visual Studio Build 実行時 msbuild.exe /p:platform= any cpu /p:configuration= release 19
変数の活用 ユーザー定義変数 スクリプト内での変数の定義や変更も可能 変数グループ ユーザー定義変数をグループ化して再利用可能に 定義済み変数 : ビルドとリリースで異なる ビルド : https://www.visualstudio.com/en-us/docs/build/define/variables リリース管理 : https://www.visualstudio.com/en-us/docs/build/concepts/definitions/release/variables 20
エージェントのディレクトリ構成 ビルド リリースの実行場所を指定可能な定義済み変数あり _work _tasks タスクで実行されるスクリプトが格納 1 r1 s a ビルドで使用するソースコード リリースで使用する成果物 21
エージェントのディレクトリ構成 ビルド リリースの実行場所を指定可能な定義済み変数あり _work _tasks 1 r1 s a 定義済み変数 Build.SourcesDirectory System.ArtifactsDirectory 22
エラー発生時の対処指針 23
エラーログは原因特定のヒントを提供 ビルド リリースはマイクロソフト提供スクリプトが実行されているだけです 設定を再確認することが問題解決の近道です ビルド リリースで成果物は適切に受け渡しされているか エージェントの設定は適切にされているか エージェントマシンと外部サービスが適切に連携しているか パラメーター 変数の値は適切か タスクは想定通りの動きをしているか 24
まとめ 25
彼を知り己を知れば百戦殆うからず 1 成果物がビルド リリースの架け橋に 2 マイクロソフト提供スクリプトが実行 3 変数の理解と活用が自動化の扉を開ける VSTS / TFS のビルド リリース機能を活用して高品質のソフトウェアの迅速な提供を! 26
2018 Microsoft Corporation. All rights reserved. 本コンテンツの著作権 および本コンテンツ中に出てくる商標権 団体名 ロゴ 製品 サービスなどはそれぞれ 各権利保有者に帰属します