Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Getting Start for Azure Pipelines

How to start Multi-stage pipelines for Azure Pipelines. Tips, basic practice, etc.

  • Be the first to comment

  • Be the first to like this

Getting Start for Azure Pipelines

  1. 1. これからはじめるAzure Pipelines かめがわ かずし(@kkamegawa)
  2. 2. 自己紹介 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
  3. 3. This contents based on 2020/7/4
  4. 4. お品書き Azure Pipelinesについて Multi-Stage Pipelinesについて 基本的な記法 作り方 高度なお話
  5. 5. CI / CD サービス、ソフトウェア戦国時代
  6. 6. Azure Pipelines Microsoftが提供するマネージドサービス GitHub Actionsとインフラは共通(らしい) YAML定義は違うのでエージェントは別実装 無料枠・オープンソース向け無料枠あり プライベートソースでは1800分 / 月が無料 オープンソースでは10並列が無制限無料 Windows / Linux / macOSのエージェントを提供
  7. 7. Azure Pipelinesの機能追加は多い ほぼ3週間に一度のス プリントに何か機能追 加されている 今後の機能追加も多く 予定されている https://docs.microsoft.com/en-us/azure/devops/release- notes/features-timeline
  8. 8. 数多い中でも最大の変更 - Multi-Stage Pipeline https://devblogs.microsoft.com/devops/whats-new-with-azure-pipelines/
  9. 9. Microsoftといえば?
  10. 10. Multi-Stage Pipelines is… テキストのYAML BuildとReleaseを 単一のファイルで 定義可能 一応GUIのアシス タントもある
  11. 11. Multi-Stage Pipelines以前のエディター 現在は “Classic” Editor
  12. 12. Classic means “Obsolete”? MSのサービスでは”Classic” とつくと終焉の足音 早めにYAMLとMulti-Stage Pipelinesに慣れましょう。
  13. 13. Azure PipelinesのYAML配置-例1 ./azure-pipelines.yml Azure ReposのGitレポジトリ にazure-pipelines.yml(デ フォルト)を配置 用途別に複数のYAMLをお いてもいいよ フォルダーの下でもOK ./sub/job_template.yml
  14. 14. Azure PipelinesのYAML配置 – Templateを使用 ./azure-pipelines.yml ./sub/job_template.yml YAMLファイルの一部をテ ンプレートとして切り出し 別フォルダーに格納して 本体から参照する ./sub/step_template.yml
  15. 15. Azure PipelinesのYAML配置 – 外部レポジトリTemplate ./azure-pipelines.yml ./sub/job_template.yml ./sub/step_template.yml YAMLファイルの一部をテ ンプレートとして切り出し 外部のレポジトリでテン プレートを集中管理する Template Repos Project Repos
  16. 16. Azure PipelinesのYAML配置 – 外部レポジトリで管理 ./prja/azure-pipelines.yml ./prjb/azure-pipelines.yml YAMLファイルを別レポジ トリーで集中管理 特定の人だけがビルド定 義を編集可能になる (通常メンバーはReader権 限にしておくなど) Project Repos Pipelines Repos
  17. 17. Azure Pipelinesとテンプレート 他サービスと比べて長くなりがちなAzure Pipelines のYAMLでもテンプレートを使えば柔軟な構成が可能 テンプレートの追加・編集はあくまでも「人間が」編 集するもの 組織のコンプライアンスで必要な処理がある場合、 Pipeline decoratorを使って、必須処理を実行させる https://docs.microsoft.com/en-us/azure/devops/extend/develop/add-pipeline- decorator?view=azure-devops
  18. 18. Templateの注意事項 100ファイルまで 連結したときトータル10MB以下 参照した文字列を展開すると2000文字まで https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops
  19. 19. YAMLパイプラインのつくり方
  20. 20. 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したファイルは一定期間で消えます
  21. 21. Multi-Stage Pipelinesの代表的な要素
  22. 22. 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)
  23. 23. 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 ]
  24. 24. Pipelineの要素 - Stage マルチステージ(ビルド、複 数環境へのデプロイ)を定義 する。なくてもよい。 displayNameはわかりやすい 名前を。自動では付与され ない dependsOnで別のstage名を 指定すると依存関係となる stages: displayName: string dependsOn: string | [ string ] condition: string variables: jobs: [ job | templateReference]
  25. 25. 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 }
  26. 26. 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
  27. 27. Pipelineの要素 – Server Job jobs: - job: string timeoutInMinutes: number cancelTimeoutInMinutes: number strategy: maxParallel: number matrix: { string: { string: string } } pool: server 先ほどまでは「パイプライン の中で」動くジョブ。これは 「パイプラインの外部サー バー」で動くジョブ デプロイ先でのエラー有無 Azure Functionsを呼び出す Work Itemが解決済みか …などを検証する
  28. 28. Pipelineの要素 - Steps steps: [ script | bash | pwsh | powershell | checkout | task | templateReference ] 処理を記述するSteps ビルドのPowerShellスクリプ ト、Gitのチェックアウト、タス クを記述する 複数行は | で連結
  29. 29. 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
  30. 30. Multi-Stage Pipelines苦労するところ とにかく長くなりやすい 長くなったなと思ったら積極的なリファクタリング必要 クライアントでビルドできるのに… 最初はSystem.Debugをtrueにしてログを見る self-hosted agentでビルドして、ファイル生成場所見る Stage, Job, Stepの名前なし問題 必ずdisplayNameつけましょう(自動でつけてほしい…)
  31. 31. オンプレミスでも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/
  32. 32. ちょっと高度な使用方法 構成管理 Azure Blueprintsと連携してデプロイするものを管理 コンプライアンス準拠 Azure Pipelinesのdecoratorを使用して、必須タスクを強制
  33. 33. よくある質問 すぐ全部移行しないとダメ? 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
  34. 34. まとめ MSのサービスで”Classic”という名前がついたら黄 色信号。移行計画を! YAMLになって大変だけど、得られるものもあります スタートには厳しいけど、エンタープライズ向けには 必要な機能も多いので頑張って!
  35. 35. 参考資料 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

    Be the first to comment

How to start Multi-stage pipelines for Azure Pipelines. Tips, basic practice, etc.

Views

Total views

786

On Slideshare

0

From embeds

0

Number of embeds

507

Actions

Downloads

8

Shares

0

Comments

0

Likes

0

×