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.

Azure PipelinesをサーバサイドのCI/CDに活用

490 views

Published on

2019/10/02 に行われたCI/CD Test Night#5 でLTした資料です。
https://testnight.connpass.com/event/145238/

Published in: Technology
  • Be the first to comment

Azure PipelinesをサーバサイドのCI/CDに活用

  1. 1. Azure Pipelinesを サーバサイドのCI/CDに活用 2019/10/2 CI/CD Test Night #5 なかしょ(中島進也)
  2. 2. Profile • 名前:なかしょ(中島 進也) • Twitter:@nakasho_dev • ブログ:なかしょの技術日誌 http://nakasho-dev.hatenablog.jp/ • 最近の興味 TDD、アジャイル開発、Xamarin、Chatbot、Tizen • 主な参加コミュニティ JXUG、.NETラボ、Cogbot、Teratail、TestNight ※本資料は私個人の意見であり、所属企業・部門見解を代表する ものではありません。 2
  3. 3. Azure DevOpsの機能 3 https://azure.microsoft.com/ja-jp/services/devops/
  4. 4. Azure Pipelinesの機能 4 https://azure.microsoft.com/ja-jp/services/devops/pipelines/
  5. 5. Build Pipelineの作成 5 このボタンを押して 最初のPipelineを作 成する。
  6. 6. リポジトリの選択 6 初心者の方はClassic Editorを 使った方が良い。
  7. 7. リポジトリの選択(Classic Editor) 7 GitHubにリポジトリがある場 合はGitHubを選択 GitHubへのコネクション情報 Repositoryの選択 Branchの選択
  8. 8. 8 ビルドテンプレートの選択
  9. 9. ビルドテンプレートの選択 • YAML • .NET Desktop • Android • ASP.NET • Azure Web App for ASP.NET • Docker Contaier • Maven • Python package • Xcode • Ant • ASP.NET Core • ASP.NET Core with Containers • Azure CloudServices • Azure Functions for .NET • Azure Functions for Node.js • Azure Functions for Python • Azure Kubernetes Service • Azure ServiceFabric • Azure Service Fabric application with Docker support • Azure Web App for Java • Go(Preview) • Gradle • Jenkins • Load test using Azure IaaS virtual machines • Machine Learning Model • Node.js With Grunt • Node.js With gulp • Universal Windows Platform • Xamarin.Android • Xamarin.iOS • Empty pipeline 9
  10. 10. 10 Pipelineの初期状態
  11. 11. 11 Pipelineの初期状態のタスク gradlew buildを実行 JARファイルをArtifact用ディレクトリ にコピー 作成したJARファイルをArtifactに Upload( Azure Artifactsとは別物)
  12. 12. 12 とりあえず実行 Save & queueでとりあえず実行
  13. 13. 13 成功! ここをクリックするとArtifactに Uploadされた中身を閲覧・取得できる。
  14. 14. 14 次はRelease Pipelineの作成
  15. 15. 15 テンプレートを選択
  16. 16. 16 Marketplaceには様々な機能が公開 https://marketplace.visualstudio.com/items?itemName=ms-vsts.cloud-foundry-build-extension
  17. 17. 17 Release Pipelineの初期状態 ここをクリックしてRelease対象の Artifactを選択。
  18. 18. 18 対象のアーティファクトを選択 対象のソースタイプを選択 対象のプロジェクトを選択 対象のBuild Pipelineを選択 対象のBuild Versionを選択
  19. 19. Release Pipelines Build Pipelines 19 BuildとReleaseの考え方 Git リポジトリ 静的解析 Unit Test Integration Test Buliid JAR Artifact Release Staging Release Production 検証環境 商用環境
  20. 20. 20 承認の仕組み Pre-deployment conditions Post-deployment conditions 承認可能なユーザ を選択する
  21. 21. Azure オンプレミスへのリリース(SSHログイン) 21 Azure Pipeline Microsoft Hosted (Ubuntu, Mac, Win) オンプレミス環境 Gateway Server Web Server Contents Server DB Server SSH SSH接続が許さ れていない場合 は?
  22. 22. Azure オンプレミスへのリリース(Self Hosted Agent) 22 Azure Pipeline Microsoft Hosted (Ubuntu, Mac, Win) オンプレミス環境 CI Server Azure Pipelines Agent Web Server Contents Server DB Server BuildはMicrosoft Hosted ReleaseはSelf Hosted HTTPS
  23. 23. Self Hosted Agentのセキュリティ 23 Azure DevOpsユーザの権限 Agentの権限 以下の設定で正しく 権限を制御しよう。 ・Azure DevOps ユーザの権限 ・Agentの権限 ・サーバ上の権限
  24. 24. Azure Pipelines AgentをGCPで動かす方法 • Google Cloudのドキュメントに説明があった Azure Pipelines と Compute Engine による CI/CD パイプラインの作成 https://cloud.google.com/solutions/creating-cicd-pipeline-vsts- compute-engine?hl=ja 24
  25. 25. Azure Artifactsの機能 26 https://azure.microsoft.com/ja-jp/services/devops/artifacts/ Azure Artifact 暗号化ライブラリ プロダクトA プロダクトB
  26. 26. Private Package Repository 27 GitHub Package Repository Azure Artifact npm ○ ○ RubyGems ○ × Maven ○ ○ Docker ○ △(Azure Container Resistory) Nuget ○ ○ Python × ○ Universal × ○
  27. 27. Azure ArtifactsにSwift Package Managerを! 28 https://developercommunity.visualstudio.com/idea/419870/add-support-for-swift-packages-in-azure-artifacts.html
  28. 28. まとめ • Azure PipelinesにはCI/CDに必要な機能が揃っている BuildとReleaseのそれぞれに豊富なテンプレートがある 標準にないものはMarketplaceから見つけよう。 • オンプレミス環境にはSelf HostedでReleaseする方法もある セキュリティのため権限周りはしっかり制御しよう。 • Azure Artifactで効率的なパッケージ管理を実現しよう。 存在しないパッケージマネージャはCommunityで要望をあげよう。 29
  29. 29. ご清聴ありがとうございました。 なかしょ(中島 進也) @nakasho_dev 30

×