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