SlideShare a Scribd company logo
これからはじめるAzure Pipelines
かめがわ かずし(@kkamegawa)
自己紹介
personal:
name: かめがわ かずし
alias: kkamegawa
community:
MVP: Microsoft MVP for Developer Technologies(2009-)
UsersGroup: Team Foundation Server Users Group
URL: https://dev.azure.com/tfsug/tfsuginfo
Blog: はてなブログ
URL: https://kkamegawa.hatenablog.jp
This contents based on 2020/7/4
お品書き
Azure Pipelinesについて
Multi-Stage Pipelinesについて
基本的な記法
作り方
高度なお話
CI / CD サービス、ソフトウェア戦国時代
Azure Pipelines
Microsoftが提供するマネージドサービス
GitHub Actionsとインフラは共通(らしい)
YAML定義は違うのでエージェントは別実装
無料枠・オープンソース向け無料枠あり
プライベートソースでは1800分 / 月が無料
オープンソースでは10並列が無制限無料
Windows / Linux / macOSのエージェントを提供
Azure Pipelinesの機能追加は多い
ほぼ3週間に一度のス
プリントに何か機能追
加されている
今後の機能追加も多く
予定されている
https://docs.microsoft.com/en-us/azure/devops/release-
notes/features-timeline
数多い中でも最大の変更 - Multi-Stage Pipeline
https://devblogs.microsoft.com/devops/whats-new-with-azure-pipelines/
Microsoftといえば?
Getting Start for Azure Pipelines
Multi-Stage Pipelines is…
テキストのYAML
BuildとReleaseを
単一のファイルで
定義可能
一応GUIのアシス
タントもある
Multi-Stage Pipelines以前のエディター
現在は “Classic” Editor
Classic means “Obsolete”?
MSのサービスでは”Classic”
とつくと終焉の足音
早めにYAMLとMulti-Stage
Pipelinesに慣れましょう。
Azure PipelinesのYAML配置-例1
./azure-pipelines.yml
Azure ReposのGitレポジトリ
にazure-pipelines.yml(デ
フォルト)を配置
用途別に複数のYAMLをお
いてもいいよ
フォルダーの下でもOK
./sub/job_template.yml
Azure PipelinesのYAML配置 – Templateを使用
./azure-pipelines.yml
./sub/job_template.yml
YAMLファイルの一部をテ
ンプレートとして切り出し
別フォルダーに格納して
本体から参照する
./sub/step_template.yml
Azure PipelinesのYAML配置 – 外部レポジトリTemplate
./azure-pipelines.yml
./sub/job_template.yml ./sub/step_template.yml
YAMLファイルの一部をテ
ンプレートとして切り出し
外部のレポジトリでテン
プレートを集中管理する
Template
Repos
Project
Repos
Azure PipelinesのYAML配置 – 外部レポジトリで管理
./prja/azure-pipelines.yml ./prjb/azure-pipelines.yml
YAMLファイルを別レポジ
トリーで集中管理
特定の人だけがビルド定
義を編集可能になる
(通常メンバーはReader権
限にしておくなど)
Project
Repos
Pipelines
Repos
Azure Pipelinesとテンプレート
他サービスと比べて長くなりがちなAzure Pipelines
のYAMLでもテンプレートを使えば柔軟な構成が可能
テンプレートの追加・編集はあくまでも「人間が」編
集するもの
組織のコンプライアンスで必要な処理がある場合、
Pipeline decoratorを使って、必須処理を実行させる
https://docs.microsoft.com/en-us/azure/devops/extend/develop/add-pipeline-
decorator?view=azure-devops
Templateの注意事項
100ファイルまで
連結したときトータル10MB以下
参照した文字列を展開すると2000文字まで
https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops
YAMLパイプラインのつくり方
YAMLになっても基本は変わらない
Build Test Publish
Build Artifacts Deploy
Approve
Deploy
Pre-
Deploy
Test
Post-
DeployよくPipelinesが難しい&失敗しがちなのはPublish
1. $Build.SourceFolder配下で生成
2. file copyタスクで$Build.ArtifactStagingDirectoryへコピー
3. Publish folderタスクでコピー
※:Azure DevOps内にPublishしたファイルは一定期間で消えます
Multi-Stage Pipelinesの代表的な要素
YAMLの基本構造
YAMLなのでスペース重要
段落単位で2spaces字下げ
 : でキーワードを区切る
 | で複数データタイプの指定が可能
Intellisenceで入力補助がある
Webは組み込み
VS Code拡張機能
Stages:
Stage A
Jobs:
Job A1
Steps:
Task A.1.1
Task A.1.2
Jobs:
Job A2:
Steps:
Task A.2.1:
Task A.2.2:
Stage B:
…..(ship)
Pipelineの要素 - Pipeline
先頭にリソース類を定義
variablesに変数定義
triggerにビルドトリガー対象
ブランチ名
prにはpull requestトリガー
対象ブランチ名
stagesには一つ以上のJobs
かテンプレート参照
name: string
resources:
pipelines: [ pipelineResource ]
containers: [ containerResource ]
repositories: [ repositoryResource ]
variables:
trigger: trigger
pr: pr
stages: [ stage | templateReference ]
Pipelineの要素 - Stage
マルチステージ(ビルド、複
数環境へのデプロイ)を定義
する。なくてもよい。
displayNameはわかりやすい
名前を。自動では付与され
ない
dependsOnで別のstage名を
指定すると依存関係となる
stages:
displayName: string
dependsOn: string | [ string ]
condition: string
variables:
jobs: [ job | templateReference]
Pipelineの要素 - Jobs
必ず使うJobs
一つ以上のJob(実際のビル
ドタスク)を含む
ジョブ内のStepsを実行する
エージェントプールを指定
する(windows/macOS/Linux,
自前等)
jobs:
- job: string
displayName: string
dependsOn: string | [ string ]
condition: string
strategy:
parallel:
matrix:
maxParallel: number
continueOnError: boolean
pool: pool
workspace:
clean: outputs | resources | all
container: containerReference
timeoutInMinutes: number
cancelTimeoutInMinutes: number
variables:
steps: [ script | bash | pwsh | powershell |
checkout | task | templateReference ]
services: { string: string | container }
Pipelineの要素 – Deployment Job
jobs:
- deployment: string
displayName: string
pool:
name: string
demands: string | [ string ]
workspace:
clean: outputs | resources | all
dependsOn: string
condition: string
continueOnError: boolean
container: containerReference
services: { string: string | container }
timeoutInMinutes: nonEmptyString
cancelTimeoutInMinutes: nonEmptyString
variables:
environment: string
strategy:
runOnce:
deploy:
steps:
- script: [ script | bash | pwsh | powershell |
checkout | task | templateReference ]
今までのRelease機能でやっ
ていたもののYAML版
一つ前との差分は”strategy”
展開戦略を指定する
runOnce:一回のみ
rolling:順番に展開
canaly:少しずつ展開
https://docs.microsoft.com/ja-
jp/azure/devops/pipelines/process/deployment-jobs?view=azure-devops
Pipelineの要素 – Server Job
jobs:
- job: string
timeoutInMinutes: number
cancelTimeoutInMinutes: number
strategy:
maxParallel: number
matrix: { string: { string: string } }
pool: server
先ほどまでは「パイプライン
の中で」動くジョブ。これは
「パイプラインの外部サー
バー」で動くジョブ
デプロイ先でのエラー有無
Azure Functionsを呼び出す
Work Itemが解決済みか
…などを検証する
Pipelineの要素 - Steps
steps:
[ script | bash | pwsh |
powershell | checkout | task |
templateReference ]
処理を記述するSteps
ビルドのPowerShellスクリプ
ト、Gitのチェックアウト、タス
クを記述する
複数行は | で連結
Pipeline要素 - Trigger
trigger:
batch: boolean
branches:
include: [ string ]
exclude: [ string ]
tags:
include: [ string ]
exclude: [ string ]
paths:
include: [ string ]
exclude: [ string ]
パイプラインが実行される
トリガーの定義
batchをtrueにすると、複数
リクエストがあっても順番に
投入される
Reposの場合、CIかけたくな
ければコミットメッセージに
***NO_CI***をつける
https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/azure-repos-
git?view=azure-devops&tabs=yaml#skipping-ci-for-individual-commits
Multi-Stage Pipelines苦労するところ
とにかく長くなりやすい
長くなったなと思ったら積極的なリファクタリング必要
クライアントでビルドできるのに…
最初はSystem.Debugをtrueにしてログを見る
self-hosted agentでビルドして、ファイル生成場所見る
Stage, Job, Stepの名前なし問題
必ずdisplayNameつけましょう(自動でつけてほしい…)
オンプレミスでもMulti-Stage Pipeline
Azure DevOps Server 2020 RC1が公開(7/1)
Multi-Stage Pipelineもサポートされました。
他たくさん新機能(だいたいSprint 170くらいまで)
https://devblogs.microsoft.com/devops/announcing-azure-devops-server-2020-rc1/
ちょっと高度な使用方法
構成管理
Azure Blueprintsと連携してデプロイするものを管理
コンプライアンス準拠
Azure Pipelinesのdecoratorを使用して、必須タスクを強制
よくある質問
すぐ全部移行しないとダメ?
GUI版はClassicになったけど、まだ大丈夫。
TFVCで使える?
非サポート
全部Classicと同じ機能そろってるの?
ないとされている機能でも代替機能で賄えるはず
Gate→Agentless Task
Task Group→Template
https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started/pipelines-get-started?view=azure-
devops#feature-availability
まとめ
MSのサービスで”Classic”という名前がついたら黄
色信号。移行計画を!
YAMLになって大変だけど、得られるものもあります
スタートには厳しいけど、エンタープライズ向けには
必要な機能も多いので頑張って!
参考資料
Multi-stage pipelines user experience
https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started/multi-stage-pipelines-
experience?view=azure-devops
Azure Pipelines公式
https://github.com/microsoft/azure-pipelines-yaml
しばやんのところ
https://blog.shibayan.jp/archive/category/DevOps
公式ブログ
https://devblogs.microsoft.com/devops/
Microsoft Learnの日本語訳 - Azure DevOps を完全理解する 目次
https://qiita.com/ymasaoka/items/c43ac02e0bc9cbdadd65

More Related Content

PDF
Azure boards for beginners
PDF
Azure DevOps入門~TechLab編
PDF
DevOps and Compliance and Security
PDF
Azure DevOps's security
PDF
Azure Boards and Azure Test Plans inside out.
PDF
Azure DevOps Online Vol.3 - Inside Azure Pipelines
PPTX
Deploy to Azure by ??? Azure Repos or GitHub
PPTX
What's new Azure DevOps in //Build 2019
Azure boards for beginners
Azure DevOps入門~TechLab編
DevOps and Compliance and Security
Azure DevOps's security
Azure Boards and Azure Test Plans inside out.
Azure DevOps Online Vol.3 - Inside Azure Pipelines
Deploy to Azure by ??? Azure Repos or GitHub
What's new Azure DevOps in //Build 2019

What's hot (20)

PDF
Deploy Strategy with Azure Pipelines
PDF
NET5 and Diagnostics
PDF
How to create your own Azure Pipeline's image
PDF
Azure DevOps Management in Organization
PDF
Azure DevOpsとセキュリティ
PPTX
Azure DevOps ハンズオン Vo.3 ~Delivery Plans を用いたプロジェクトのスケジュール管理~
PPTX
Visual studioonlineとwebサイトで始めるci/cdの第一歩
PPTX
What's Azure DevOps
PPTX
Static website + Piplelines
PDF
Azure DevOps 関西 2019 - Overview
PDF
PHPerだってサーバーレスしたい!
PDF
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
PPTX
Azure DevOps ハンズオン Vo.1 ~Azure Boards を用いたアジャイル計画とポートフォリオマネジメント~
PDF
The Internal of Serverless Plugins
PDF
[MR09] デスクトップ アプリをストアから配布するための A to Z
PDF
「何もしないのにCIが失敗した」を防ぐ
PDF
Azure Functions Tips
PDF
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
PDF
Introduction of Azure Docker Integration
PPTX
Azure DevOps ハンズオン Vo.2 ~Azure DevOps Wiki を用いたドキュメントの作成~
Deploy Strategy with Azure Pipelines
NET5 and Diagnostics
How to create your own Azure Pipeline's image
Azure DevOps Management in Organization
Azure DevOpsとセキュリティ
Azure DevOps ハンズオン Vo.3 ~Delivery Plans を用いたプロジェクトのスケジュール管理~
Visual studioonlineとwebサイトで始めるci/cdの第一歩
What's Azure DevOps
Static website + Piplelines
Azure DevOps 関西 2019 - Overview
PHPerだってサーバーレスしたい!
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
Azure DevOps ハンズオン Vo.1 ~Azure Boards を用いたアジャイル計画とポートフォリオマネジメント~
The Internal of Serverless Plugins
[MR09] デスクトップ アプリをストアから配布するための A to Z
「何もしないのにCIが失敗した」を防ぐ
Azure Functions Tips
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
Introduction of Azure Docker Integration
Azure DevOps ハンズオン Vo.2 ~Azure DevOps Wiki を用いたドキュメントの作成~
Ad

Similar to Getting Start for Azure Pipelines (20)

PDF
Azure DevOps と開発管理
PDF
Container deployment on Azure
PDF
サイドプロジェクトで使う Azure DevOps
PDF
AzureDevOpsで作るHoloLensアプリCI環境
PDF
AKS+KEDAで実現!Container Functions Pipeline
PPTX
Azure DevOps で始めるスタートダッシュ
PDF
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
PDF
PTLのお仕事とリリースパイプラインの裏側
PPTX
Multibranch Pipeline with Docker 入門編
PPTX
Azure PipelinesをサーバサイドのCI/CDに活用
PDF
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
PDF
GitHub Actions で CI/CD
PDF
Capistrano
PDF
JAWS-UG Meets Windows (JAWS Days 2017)
PPTX
DevOps on azure 高品質クラウドデザインを求めて
PDF
作る人から作りながら運用する人になっていく
PPTX
Jenkins 2.0 (日本語)
PPTX
Jenkins x Kubernetesが簡単だと思ったら大変だった話
PDF
Azure CLI あずにゃんの CLI を使ってみた結果www
PPTX
PowerShell de Azure
Azure DevOps と開発管理
Container deployment on Azure
サイドプロジェクトで使う Azure DevOps
AzureDevOpsで作るHoloLensアプリCI環境
AKS+KEDAで実現!Container Functions Pipeline
Azure DevOps で始めるスタートダッシュ
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
PTLのお仕事とリリースパイプラインの裏側
Multibranch Pipeline with Docker 入門編
Azure PipelinesをサーバサイドのCI/CDに活用
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
GitHub Actions で CI/CD
Capistrano
JAWS-UG Meets Windows (JAWS Days 2017)
DevOps on azure 高品質クラウドデザインを求めて
作る人から作りながら運用する人になっていく
Jenkins 2.0 (日本語)
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Azure CLI あずにゃんの CLI を使ってみた結果www
PowerShell de Azure
Ad

More from Kazushi Kamegawa (15)

PDF
Ignite 2021秋 recap - 開発者向け新機能紹介
PDF
DevOps and compliance and security
PDF
Ignite 2021 振り返り(DevOps)
PDF
Introduce TFSUG and Azure DevOps Server 2020
PDF
はじめてのコンテナーDocker & Windows & Linux
PPTX
その後のBash on windows
PDF
Windows10時代のクロスプラットフォーム開発
PDF
Cross Platform CI for Visual Studio Online
PDF
はじめてのTeam Foundation ServerとVisual Studio Online
PDF
トラブル発生、その時あなたがすることは?
PDF
Visual studio online and Agile
PDF
PowerShell and Release Management Server
PDF
Application insights で行ってみよう
PDF
TypeScript And ALM
PDF
Planning Effective Test Plan
Ignite 2021秋 recap - 開発者向け新機能紹介
DevOps and compliance and security
Ignite 2021 振り返り(DevOps)
Introduce TFSUG and Azure DevOps Server 2020
はじめてのコンテナーDocker & Windows & Linux
その後のBash on windows
Windows10時代のクロスプラットフォーム開発
Cross Platform CI for Visual Studio Online
はじめてのTeam Foundation ServerとVisual Studio Online
トラブル発生、その時あなたがすることは?
Visual studio online and Agile
PowerShell and Release Management Server
Application insights で行ってみよう
TypeScript And ALM
Planning Effective Test Plan

Getting Start for Azure Pipelines