Mais conteúdo relacionado
Semelhante a GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Container Apps (20)
Mais de Kazumi IWANAGA (20)
GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Container Apps
- 1. GitHub Actions と Azure
PaaS でプルリクエストごとに
環境を ~ Azure Static Web
Apps と Container Apps
開発を加速するGitHub x Azure 最新開発ベストプラクティス
vol.2
- 2. 岩永かづみ / Kazumi IWANAGA
• Microsoft MVP for Azure
• ZEN Architects 所属
• GitHub公認トレーナー
• 得意な領域
• Infrastructure as Code
• GitHub Actions による自動化
• 技術コミュニティ
• Code Polaris / Hack Everything.
• @dz_
• @dzeyelid
• @dzeyelid
- 16. GitHub Actions 概要
• GitHub と連動したワークフローを構築できる
• 受け付けられるイベントが豊富
• push, pull_request, release, workflow_dispatch(手動/API実行)…
• 公開されている「アクション」を利用できる
• Marketplace
• パブリックリポジトリ(組織内リポジトリも可能)
• アクションの自作もできる
• JavaScript、またはDocker コンテナ
- 17. GitHub Actions ワークフロー概要(1)
• on:
• 受け付けるイベントを指定する
• jobs:
• 後述の steps をまとめる単位
• 個々にランナーが割り当てられる
• 並列に実行、依存関係を指定した順次実行もできる
• steps:
• アクションを実行する、またはシェルコマンドを実行する
- 19. GitHub Actions ワークフロー概要(3)
• シークレットや変数を定義してワークフロー内で利用できる
• 条件分岐ができる
• ワークフローを再利用できる(ワークフローから呼び出せるワークフ
ローを作成できる)
• Environments for deployment でシークレットや変数を切り替え
たり、人による許可を要求(ゲート)を設けることができる
• 用途に応じたランナーを選択できる
• GitHub ホステッド ランナー(Ubuntu, Windows Server, macOS)
• セルフ ホステッド ランナー
- 21. 参考(1)
• GitHub Actions を理解する - GitHub Docs
• GitHub Actions の重要な機能 - GitHub Docs
• 式 - GitHub Docs
• コンテキスト - GitHub Docs
• Variables - GitHub Docs
• ワークフローをトリガーするイベント - GitHub Docs
• Workflow syntax for GitHub Actions - GitHub Docs
• GitHub Actions のワークフロー コマンド - GitHub Docs
- 22. 参考(2)
• Go でのビルドとテスト - GitHub Docs
• Java
• Ant / Gradle / Maven
• .NETでのビルドとテスト - GitHub Docs
• Node.js のビルドとテスト - GitHub Docs
• Python のビルドとテスト - GitHub Docs
• Rubyでのビルドとテスト - GitHub Docs
• Swift のビルドとテスト - GitHub Docs
• Xamarin アプリケーションのビルドとテスト - GitHub Docs
- 23. 参考(3)
• Azure へのデプロイ - GitHub Docs
• OpenID Connect を使ったセキュリティ強化について - GitHub
Docs
• GitHub ホステッド ランナーの概要 - GitHub Docs
• セルフホステッド ランナーの概要 - GitHub Docs
• カスタム アクションについて - GitHub Docs
• GitHub Actions Importer を使用した移行の自動化 - GitHub
Docs
- 26. よく使うおすすめ Azure 関連アクション
• Azure/login
• Azure/cli
• Azure/arm-deploy
• Azure/functions-action
• Azure/webapps-deploy
• Azure/static-web-apps-deploy
• Azure/container-apps-deploy-action
• Azure/aca-review-apps
(かづみ個人調べ)
- 27. Azure/login アクション
• Azure にアクセスするときは基本使う
• az login が実行される
• Az PowerShell モジュールに切替えも可能
• 認証方法
• サービス プリンシパル(Service principal)
• OpenID Connect (OIDC) ← おすすめ💡
ユーティリティ
- 28. OpenID Connect による認証について
• Azure では、ロールベースの制御(RBAC)としてサービス プリンシ
パルなどを利用する認証が主流ですが、OpenID Connect を利用
することでさらに安全に利用することができる
• シークレットの扱いが不要になる(有効期間が短いアクセス トークンを都度発
行、利用する)
• 認証と認可の管理を明確に行える
• 資格情報のローテーションが行われる(ジョブごと)
- 31. Azure/functions-action アクション
• Azure Functions へのデプロイを行う
• コードを zip 圧縮して WEBSITE_RUN_FROM_PACKAGE でデ
プロイしてくれる
• zip 圧縮の手間が省けて使いやすい
• スロット指定や、pom.xml の利用、Kudu pre-deployment の実行、
oryx build の利用などができる
デプロイ
- 40. ポイント
1. Azure Container app の Continuous deployment を設定して自
動生成されたワークフロー
• Azureの認証はサービスプリンシパル
• Azure Container Registry への認証は admin user 有効
2. Azure/container-apps-deploy-action を利用したワークフロー
• Azure の認証は、OIDC 接続の例を併せて実装
• Azure Container Registry の admin user 無効、短期間のアクセストークンを利
用
• az acr login --expose-token で短期間のアクセストークンを発行
• 参考: Azure Container Registry でのリポジトリに対するアクセス許可 - Azure
Container Registry | Microsoft Learn