🙆♀️
GitHub ActionsでAzure App Serviceのクイックスタートをワークフロー化してみる①
初めに
Azure App Serviceの公式ドキュメントのクイックスタートをGitHub Actionsのワークフロー化して、自動で構築/デプロイできるようにしようと思います。
今回は、「クイックスタート: Python (Django または Flask) Web アプリを Azure App Service にデプロイする」をやってみます。
作成するワークフロー
- アプリケーションをApp Serviceにデプロイするワークフロー
- 今回はDjangoアプリケーションをデプロイする
- リソースを削除するワークフロー
前提条件
-
サービス プリンシパルを作成して GitHub シークレットとして追加しておく
- 権限のスコープはサブスクリプション
ワークフロー実装
- アプリケーションをApp Serviceにデプロイするワークフロー
name: Deploy App Service
on:
workflow_dispatch:
inputs:
resource_group_name:
app_service_name:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Log in with Azure
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Clone Sample App
run: |
git clone https://github.com/Azure-Samples/msdocs-python-django-webapp-quickstart
- name: Deploy App
uses: azure/CLI@v1
with:
azcliversion: 2.36.0
inlineScript: |
cd msdocs-python-django-webapp-quickstart
az webapp up \
--name '${{ github.event.inputs.app_service_name }}' \
--resource-group '${{ github.event.inputs.resource_group_name }}' \
--runtime 'PYTHON:3.9' \
--sku B1
- name: Setup Log
uses: azure/CLI@v1
with:
azcliversion: 2.36.0
inlineScript: |
az webapp log config \
--web-server-logging filesystem \
--name '${{ github.event.inputs.app_service_name }}' \
--resource-group '${{ github.event.inputs.resource_group_name }}'
- リソースを削除するワークフロー
name: Delete Resource Group
on:
workflow_dispatch:
inputs:
resource_group_name:
jobs:
delete-resource-group:
runs-on: ubuntu-latest
steps:
- name: Log in with Azure
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Delete Resource Group
uses: azure/CLI@v1
with:
azcliversion: 2.36.0
inlineScript: |
az group delete \
--name '${{ github.event.inputs.resource_group_name }}' \
--yes
動作確認
- 「アプリケーションをApp Serviceにデプロイするワークフロー」を実行
-
http://<app-name>.azurewebsites.net
にアクセスしてアプリケーションが動作していることを確認
- 「リソースを削除するワークフロー」を実行
- リソースグループが削除されていることを確認
おわりに
今回は、Azure App Serviceのチュートリアルをそのままワークフロー化することをやってみました。実際に業務に反映するにはいろいろ工夫は必要ですが、Azure App ServiceとGitHub Actionsの使い方を実践的に学ぶには良い感じだと思ったので、別のチュートリアルのワークフロー化もやってみようと思います。
Discussion