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