SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
GitHub Actions と Azure
PaaS でプルリクエストごとに
環境を ~ Azure Static Web
Apps と Container Apps
開発を加速するGitHub x Azure 最新開発ベストプラクティス
vol.2
岩永かづみ / Kazumi IWANAGA
• Microsoft MVP for Azure
• ZEN Architects 所属
• GitHub公認トレーナー
• 得意な領域
• Infrastructure as Code
• GitHub Actions による自動化
• 技術コミュニティ
• Code Polaris / Hack Everything.
• @dz_
• @dzeyelid
• @dzeyelid
CI/CD
CI/CD すでに構築済みの方も多いですよね
本番
ステージング
main
staging
ステージング環境のCI/CD
ステージング環境はどうでしょう?
本番
ステージング
main
staging
ステージング環境は十分?
本番
ステージング
main
featureA
ステージング環境は十分?
本番
ステージング
main
featureA
featureB
ステージング環境は十分?
本番
ステージング
main
featureA
featureB
ステージング環境は十分?
本番
ステージング
main
featureA
featureB
他のプルリクエストの更新で上書きされたり、
いつのプルリクエストの環境かわからなくなったり…
プルリクエストごとの環境で
より便利に✨
プルリクエストごとに環境があったら便利!
本番
featureA
main
featureA
featureB
featureB
CI/CD をプルリクエストにも活用しよう!
GitHub Actions なら
プルリクエストとの連携がシームレス
GitHub Actions 基礎
GitHub Actions 概要
• GitHub と連動したワークフローを構築できる
• 受け付けられるイベントが豊富
• push, pull_request, release, workflow_dispatch(手動/API実行)…
• 公開されている「アクション」を利用できる
• Marketplace
• パブリックリポジトリ(組織内リポジトリも可能)
• アクションの自作もできる
• JavaScript、またはDocker コンテナ
GitHub Actions ワークフロー概要(1)
• on:
• 受け付けるイベントを指定する
• jobs:
• 後述の steps をまとめる単位
• 個々にランナーが割り当てられる
• 並列に実行、依存関係を指定した順次実行もできる
• steps:
• アクションを実行する、またはシェルコマンドを実行する
GitHub Actions ワークフロー概要(2)
GitHub Actions ワークフロー概要(3)
• シークレットや変数を定義してワークフロー内で利用できる
• 条件分岐ができる
• ワークフローを再利用できる(ワークフローから呼び出せるワークフ
ローを作成できる)
• Environments for deployment でシークレットや変数を切り替え
たり、人による許可を要求(ゲート)を設けることができる
• 用途に応じたランナーを選択できる
• GitHub ホステッド ランナー(Ubuntu, Windows Server, macOS)
• セルフ ホステッド ランナー
GitHub Actions のメリット
• コードを置いてあるリポジトリへのアクセスなど、認証を統一できる
• 無料枠が多め
• 豊富なアクション
• プルリクエストとの親和性の高さ◎
参考(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
参考(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
参考(3)
• Azure へのデプロイ - GitHub Docs
• OpenID Connect を使ったセキュリティ強化について - GitHub
Docs
• GitHub ホステッド ランナーの概要 - GitHub Docs
• セルフホステッド ランナーの概要 - GitHub Docs
• カスタム アクションについて - GitHub Docs
• GitHub Actions Importer を使用した移行の自動化 - GitHub
Docs
Azure の公式アクション紹介
GitHub Marketplace
Actions & Verified Creator
"azure" 検索🔍
よく使うおすすめ 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
(かづみ個人調べ)
Azure/login アクション
• Azure にアクセスするときは基本使う
• az login が実行される
• Az PowerShell モジュールに切替えも可能
• 認証方法
• サービス プリンシパル(Service principal)
• OpenID Connect (OIDC) ← おすすめ💡
ユーティリティ
OpenID Connect による認証について
• Azure では、ロールベースの制御(RBAC)としてサービス プリンシ
パルなどを利用する認証が主流ですが、OpenID Connect を利用
することでさらに安全に利用することができる
• シークレットの扱いが不要になる(有効期間が短いアクセス トークンを都度発
行、利用する)
• 認証と認可の管理を明確に行える
• 資格情報のローテーションが行われる(ジョブごと)
Azure/cli アクション
• GitHub ホステッド ランナーに Azure CLI はインストールされている
• バージョン指定したいときや、セルフ ホステッド ランナーを利用すると
きに便利
ユーティリティ
Azure/arm-deploy アクション
• ARM template や Bicep でデプロイをするときに便利
ユーティリティ
Azure/functions-action アクション
• Azure Functions へのデプロイを行う
• コードを zip 圧縮して WEBSITE_RUN_FROM_PACKAGE でデ
プロイしてくれる
• zip 圧縮の手間が省けて使いやすい
• スロット指定や、pom.xml の利用、Kudu pre-deployment の実行、
oryx build の利用などができる
デプロイ
Azure/webapps-deploy アクション
• Azure Web Apps へのデプロイを行う
• Azure Web Apps
• Azure Web Apps for Containers
• スロット指定や、startup-command の実行ができる
デプロイ
Azure/static-web-apps-deploy
• 完璧なインテグレーション!理想形!
• Azure Static Web Apps へのアプリケーションのビルド、およびデ
プロイを行う
• 静的サイトのビルド
• 内蔵 Functions のビルド
• pull_request イベントの場合、自動的にプレビュー環境にデプロイし
てくれる
• Azure 側の仕組みが完全に連携されている
ビルド デプロイ ステージング
Azure/container-apps-deploy-action
• Azure Container Apps へのイメージビルド、およびデプロイを行う
• コンテナイメージをビルド
• Azure Container Registry へ push
• Azure Container App へデプロイ
• まだ、v0 だが、ビルド→レジストリへのpush→デプロイまでの一連の
動作を1つのアクションで扱ってくれるので非常に便利
ビルド デプロイ
Azure/aca-review-apps アクション
• Azure Container apps の複数リビジョンモードを利用して、ステー
ジング用の環境を構成できる
• デプロイのみ
ステージング
デモ
デモ①
Azure Static Web Apps で、プルリクエストごとにプレビュー環境を用意する
ポイント
• Azure/static-web-apps-deploy アクションだけで構成されてい
る
• 静的アプリケーションのビルド
• 内蔵 functions のビルド
• デプロイ
• pull_request イベントのイベント種別 closed のときは、プレビュー環境のク
ローズ
• このワークフローは、Azure ポータルや Azure CLI で自動生成され
る
デモ②
Azure/container-apps-deploy-action ですっきり
ポイント
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
デモ③
Azure/aca-review-apps でプルリクエストごとにステージング用環境を用意す
る
ポイント
• Azure/aca-review-apps アクションは複数リビジョンモードへのデ
プロイのみを担う
• これにより、Azure Container registry 上のリポジトリやイメージな
どは、用途に応じて運用できる
• url が出力されるので、GitHub Actions の deployment
environment の url を利用してプルリクエストに提示することもでき
る
よいぞ、
GitHub Actions
Thank you so much🍩.

Mais conteúdo relacionado

Semelhante a GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Container Apps

Semelhante a GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Container Apps (20)

App Service の DevOps と Visual Studio Team Services 最新アップデート
App Service の DevOps と Visual Studio Team Services 最新アップデートApp Service の DevOps と Visual Studio Team Services 最新アップデート
App Service の DevOps と Visual Studio Team Services 最新アップデート
 
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
 
Azure DevOpsとVisual Studio App CenterをモバイルアプリのCI/CDに活用しよう
Azure DevOpsとVisual Studio App CenterをモバイルアプリのCI/CDに活用しようAzure DevOpsとVisual Studio App CenterをモバイルアプリのCI/CDに活用しよう
Azure DevOpsとVisual Studio App CenterをモバイルアプリのCI/CDに活用しよう
 
DevOps on Azure Kubernetes
DevOps on Azure KubernetesDevOps on Azure Kubernetes
DevOps on Azure Kubernetes
 
kubernetes on Azure 最新情報
kubernetes on Azure 最新情報kubernetes on Azure 最新情報
kubernetes on Azure 最新情報
 
Azure Serverless or Power Platform 〜 あなたならどっち?! - Azure Serverless 編
Azure Serverless or Power Platform 〜 あなたならどっち?! - Azure Serverless 編Azure Serverless or Power Platform 〜 あなたならどっち?! - Azure Serverless 編
Azure Serverless or Power Platform 〜 あなたならどっち?! - Azure Serverless 編
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CD
 
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
 
クラウド環境でのセキュリティ監査自動化【DeNA TechCon 2020 ライブ配信】
クラウド環境でのセキュリティ監査自動化【DeNA TechCon 2020 ライブ配信】クラウド環境でのセキュリティ監査自動化【DeNA TechCon 2020 ライブ配信】
クラウド環境でのセキュリティ監査自動化【DeNA TechCon 2020 ライブ配信】
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...
 
【NLU祭り 場外編】コミュニケーションをより身近に、よりかしこく。LUIS と Azure AI サービスの使いどころ
【NLU祭り 場外編】コミュニケーションをより身近に、よりかしこく。LUIS と Azure AI サービスの使いどころ【NLU祭り 場外編】コミュニケーションをより身近に、よりかしこく。LUIS と Azure AI サービスの使いどころ
【NLU祭り 場外編】コミュニケーションをより身近に、よりかしこく。LUIS と Azure AI サービスの使いどころ
 
わんくま東京勉強会#46 Azureセッション資料
わんくま東京勉強会#46 Azureセッション資料わんくま東京勉強会#46 Azureセッション資料
わんくま東京勉強会#46 Azureセッション資料
 
わんくま東京勉強会#46 Azureセッション資料
わんくま東京勉強会#46 Azureセッション資料わんくま東京勉強会#46 Azureセッション資料
わんくま東京勉強会#46 Azureセッション資料
 
Open Source x AI
Open Source x AIOpen Source x AI
Open Source x AI
 
Osc fukuoka xAI Meetup
Osc fukuoka xAI MeetupOsc fukuoka xAI Meetup
Osc fukuoka xAI Meetup
 
Windows Azure Mobile Servicesによるアプリ構築
Windows Azure Mobile Servicesによるアプリ構築Windows Azure Mobile Servicesによるアプリ構築
Windows Azure Mobile Servicesによるアプリ構築
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
Container x azure x kubernetes
Container x azure x kubernetesContainer x azure x kubernetes
Container x azure x kubernetes
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
 

Mais de Kazumi IWANAGA

Mais de Kazumi IWANAGA (20)

GitHub dockyardコミュニティ 竣工イベント!オープニング資料
GitHub dockyardコミュニティ 竣工イベント!オープニング資料GitHub dockyardコミュニティ 竣工イベント!オープニング資料
GitHub dockyardコミュニティ 竣工イベント!オープニング資料
 
GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月
 
高さ比べじゃない、キャリアは歩んできた道
高さ比べじゃない、キャリアは歩んできた道高さ比べじゃない、キャリアは歩んできた道
高さ比べじゃない、キャリアは歩んできた道
 
GitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へGitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へ
 
突如登場したAzure Developer CLIでなにができるのか?検証してみる
突如登場したAzure Developer CLIでなにができるのか?検証してみる突如登場したAzure Developer CLIでなにができるのか?検証してみる
突如登場したAzure Developer CLIでなにができるのか?検証してみる
 
GitHub Codespaces が拡げる開発環境、いつでもどこでも Visual Studio Code で!
GitHub Codespaces が拡げる開発環境、いつでもどこでも Visual Studio Code で!GitHub Codespaces が拡げる開発環境、いつでもどこでも Visual Studio Code で!
GitHub Codespaces が拡げる開発環境、いつでもどこでも Visual Studio Code で!
 
女性エンジニアコミュニティから見える価値観のリアル
女性エンジニアコミュニティから見える価値観のリアル女性エンジニアコミュニティから見える価値観のリアル
女性エンジニアコミュニティから見える価値観のリアル
 
「あの人の自分戦略を聞きたい!2022」~ 大平かづみの場合
「あの人の自分戦略を聞きたい!2022」~ 大平かづみの場合「あの人の自分戦略を聞きたい!2022」~ 大平かづみの場合
「あの人の自分戦略を聞きたい!2022」~ 大平かづみの場合
 
本領を発揮するために、まずバリアを開放できる場を
本領を発揮するために、まずバリアを開放できる場を本領を発揮するために、まずバリアを開放できる場を
本領を発揮するために、まずバリアを開放できる場を
 
「 Azure 」にデータを溜めて活用する のご紹介 - 「はじめてのNode-RED ver.1.3.0対応版」書籍出版記念イベント LT
「 Azure 」にデータを溜めて活用する のご紹介 - 「はじめてのNode-RED ver.1.3.0対応版」書籍出版記念イベント LT「 Azure 」にデータを溜めて活用する のご紹介 - 「はじめてのNode-RED ver.1.3.0対応版」書籍出版記念イベント LT
「 Azure 」にデータを溜めて活用する のご紹介 - 「はじめてのNode-RED ver.1.3.0対応版」書籍出版記念イベント LT
 
Code Polaris 紹介(Woman type イベント「女性エンジニアのキャリアのお悩み相談室 with Code Polaris」)
Code Polaris 紹介(Woman type イベント「女性エンジニアのキャリアのお悩み相談室 with Code Polaris」)Code Polaris 紹介(Woman type イベント「女性エンジニアのキャリアのお悩み相談室 with Code Polaris」)
Code Polaris 紹介(Woman type イベント「女性エンジニアのキャリアのお悩み相談室 with Code Polaris」)
 
Azure Rock Star Community Day #2 - Cogbot Community スタッフが選ぶ Microsoft Learn コ...
Azure Rock Star Community Day #2 - Cogbot Community スタッフが選ぶ Microsoft Learn コ...Azure Rock Star Community Day #2 - Cogbot Community スタッフが選ぶ Microsoft Learn コ...
Azure Rock Star Community Day #2 - Cogbot Community スタッフが選ぶ Microsoft Learn コ...
 
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
 
Code Polaris meetup #2
Code Polaris meetup #2Code Polaris meetup #2
Code Polaris meetup #2
 
Code Polaris meetup #1
Code Polaris meetup #1Code Polaris meetup #1
Code Polaris meetup #1
 
TypeScript x Bot Framework
TypeScript x Bot FrameworkTypeScript x Bot Framework
TypeScript x Bot Framework
 
de:code 夏まつり クイズクライアント作ったよ!
de:code 夏まつり クイズクライアント作ったよ!de:code 夏まつり クイズクライアント作ったよ!
de:code 夏まつり クイズクライアント作ったよ!
 
観たいセッションがかぶった!なんて心配ご無用。今年は、興味の赴くままにあれもこれも♪
観たいセッションがかぶった!なんて心配ご無用。今年は、興味の赴くままにあれもこれも♪観たいセッションがかぶった!なんて心配ご無用。今年は、興味の赴くままにあれもこれも♪
観たいセッションがかぶった!なんて心配ご無用。今年は、興味の赴くままにあれもこれも♪
 
Cogbot コミュニティのご紹介 #MSBuild #COM173
Cogbot コミュニティのご紹介 #MSBuild #COM173Cogbot コミュニティのご紹介 #MSBuild #COM173
Cogbot コミュニティのご紹介 #MSBuild #COM173
 
TOMORROW IS IN YOUR HANDS - テクノロジ・ブーストをまとい、生き抜くために - Microsoft Ignite The Tou...
TOMORROW IS IN YOUR HANDS - テクノロジ・ブーストをまとい、生き抜くために - Microsoft Ignite The Tou...TOMORROW IS IN YOUR HANDS - テクノロジ・ブーストをまとい、生き抜くために - Microsoft Ignite The Tou...
TOMORROW IS IN YOUR HANDS - テクノロジ・ブーストをまとい、生き抜くために - Microsoft Ignite The Tou...
 

Último

Último (11)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Container Apps