azure devops projects にも役立つ!...azure devops projects にも役立つ!visual studio...

27
Azure DevOps Projects にも役立つ! Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説 AD27

Upload: others

Post on 22-May-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

Azure DevOps Projects にも役立つ!

Visual Studio Team Services (VSTS) /

Team Foundation Server (TFS)

ビルド&リリース機能の仕組みを解説

AD27

Page 2: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

セッション概要

2

• VSTS / TFS 上での CI / CD パイプライン構築に役立つノウハウや考え方をご紹介します。

• Build 2018 でアナウンスされたアップデートも紹介

Visual Studio Team ServicesTeam Foundation Server 2018 Update 2

Page 3: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

Agenda

• ビルド機能とリリース機能を使ったCI/CD 王道パターン

• エージェントの挙動解説

• エラー発生時の対処指針

3

Page 4: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

お願い

4

セッションスライドのダウンロード先

https://decode18.blob.core.windows.net/ad27/AD27.pptx

シャッター音はご遠慮ください

ご理解・ご協力よろしくお願いします!

Page 5: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

ビルド機能とリリース機能を使ったCI/CD 王道パターン

5

Page 6: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

構成例 (1)

ASP.NET アプリを Azure Web Apps + SQL Database にデプロイ

6

ビルド機能 リリース機能

VSTS

Page 7: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

構成例 (2)

Java アプリを Web Apps for Containers にデプロイ

7

ビルド機能 リリース機能

Azure Container Registory

Page 8: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

王道構成

成果物発行までをビルド機能、それ以降をリリース機能で構成

8

外部 Git

GitHub Enterprise

Subversion

GitHub *

Bitbucket Cloud *

VSTS/TFS

TFVC

Git

リポジトリ ビルド機能 リリース機能

* VSTS のみサポート

VSTS / TFS外部サービス

Page 9: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

王道構成の背景

成果物に関する機能は、ビルド機能とリリース機能で棲み分け

9

ビルド機能 リリース機能

エージェント

共通タスク

変数グループ

定義済み変数・テンプレート ビルド専用 リリース専用

ソースコードの取得 ○ △

ソースコード品質チェック ○

成果物の発行 ○

成果物の取得 ○

ワークフロー(承認など) ○

Page 10: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

”成果物発行” タスク

• ビルドの一番最後での実行を推奨

• ビルド機能のみ有効。リリース機能ではエラーとなる

• 外部サービスに成果物発行する場合は使用しない

10

Page 11: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

成果物の取得

• VSTS / TFS• ビルド実行

• TFVC / Git

• Package Management

• 外部サービス• Jenkins

• GitHub

• Azure Container Registry

• Docker Hub

11

Page 12: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

ビルド機能とリリース機能は同じ実行基盤

自由度が高すぎるパイプライン作成が可能になっている

12

ビルド機能 リリース機能

エージェント

共通タスク

変数グループ

定義済み変数・テンプレート ビルド専用 リリース専用

ソースコードの取得 ○ △

ソースコード品質チェック ○

成果物の発行 ○

成果物の取得 ○

ワークフロー(承認など) ○

Page 13: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

ビルド機能だけで CI/CD 構成はだめなのか?

• リリース機能のみ利用可能なワークフロー• 承認

• パイプライン処理(環境の並行実行含む)

• リリースゲート: デプロイ後の環境での評価が可能

13

Page 14: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

リリース機能だけで 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 のみ)

Page 15: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

エージェントの挙動解説

15

Page 16: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

ビルド・リリース実行場所

• VSTS 上ではない。 Hosted Agent のあるマシン上で実行

• 外部サービスとの連携の場合は、エージェントが動いているマシンと連携できることを予め確認

16

VSTS プライベート環境

マシン

パブリック環境

Hosted

Agent

成果物

コード 成果物

成果物

Page 17: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

Hosted Agentとプライベートエージェント

Hosted Agent: マイクロソフト提供 VSTS 専用エージェント

• Windows 環境では、Hosted VS 2017 がデフォルト

• Hosted Linux / Hosted macOS はプレビューとして提供

プライベートエージェント: 自前のマシンを利用する際に使用

• Hosted Agent にない環境で実行する必要がある場合

• 環境固定したい場合

• イントラネットの環境上でのビルド・リリース実行場合

17

Page 18: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

タスクの正体

• ビルド、リリース実行されるマシン上にスクリプトがダウンロード

• 設定したパラメーターがスクリプト上で読み込まれて実行

• “成果物発行” タスクの例

18

publishbuildartifacts.js

Page 19: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

変数 (Variable)

• 複数の設定での同時ビルド・リリースの際にも活用

19

変数定義 Visual Studio Build

msbuild.exe ・・・ /p:platform=“any cpu” /p:configuration=“release”

実行時

Page 20: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

変数の活用

• ユーザー定義変数• スクリプト内での変数の定義や変更も可能

• 変数グループ• ユーザー定義変数をグループ化して再利用可能に

• 定義済み変数: ビルドとリリースで異なる• ビルド: https://www.visualstudio.com/en-us/docs/build/define/variables

• リリース管理: https://www.visualstudio.com/en-us/docs/build/concepts/definitions/release/variables

20

Page 21: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

エージェントのディレクトリ構成

• ビルド・リリースの実行場所を指定可能な定義済み変数あり

21

_work

_tasks

1

r1

s

a

タスクで実行されるスクリプトが格納

ビルドで使用するソースコード

リリースで使用する成果物

Page 22: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

エージェントのディレクトリ構成

• ビルド・リリースの実行場所を指定可能な定義済み変数あり

22

_work

_tasks

1

r1

s

a

Build.SourcesDirectory

System.ArtifactsDirectory

定義済み変数

Page 23: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

エラー発生時の対処指針

23

Page 24: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

エラーログは原因特定のヒントを提供

• ビルド・リリースで成果物は適切に受け渡しされているか

• エージェントの設定は適切にされているか

• エージェントマシンと外部サービスが適切に連携しているか

• パラメーター、変数の値は適切か

• タスクは想定通りの動きをしているか

24

ビルド・リリースはマイクロソフト提供スクリプトが実行されているだけです。設定を再確認することが問題解決の近道です。

Page 25: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

まとめ

25

Page 26: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

彼を知り己を知れば百戦殆うからず

26

1 成果物がビルド・リリースの架け橋に

2 マイクロソフト提供スクリプトが実行

3 変数の理解と活用が自動化の扉を開ける

VSTS / TFS のビルド・リリース機能を活用して高品質のソフトウェアの迅速な提供を!

Page 27: Azure DevOps Projects にも役立つ!...Azure DevOps Projects にも役立つ!Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) ビルド&リリース機能の仕組みを解説

© 2018 Microsoft Corporation. All rights reserved.

本コンテンツの著作権、および本コンテンツ中に出てくる商標権、団体名、ロゴ、製品、サービスなどはそれぞれ、各権利保有者に帰属します。