🙆‍♀️

GitHub ActionsでAzure App Serviceのクイックスタートをワークフロー化してみる①

2022/06/08に公開

初めに

Azure App Serviceの公式ドキュメントのクイックスタートをGitHub Actionsのワークフロー化して、自動で構築/デプロイできるようにしようと思います。
今回は、「クイックスタート: Python (Django または Flask) Web アプリを Azure App Service にデプロイする」をやってみます。
https://docs.microsoft.com/ja-jp/azure/app-service/quickstart-python?tabs=django%2Cwindows%2Cazure-portal%2Cvscode-deploy%2Cterminal-bash%2Cdeploy-instructions-azportal%2Cdeploy-instructions-zip-azcli

作成するワークフロー

  1. アプリケーションをApp Serviceにデプロイするワークフロー
    • 今回はDjangoアプリケーションをデプロイする
  2. リソースを削除するワークフロー

前提条件

ワークフロー実装

  1. アプリケーションを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 }}'
  1. リソースを削除するワークフロー
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

動作確認

  1. 「アプリケーションをApp Serviceにデプロイするワークフロー」を実行
  2. http://<app-name>.azurewebsites.netにアクセスしてアプリケーションが動作していることを確認
  3. 「リソースを削除するワークフロー」を実行
  4. リソースグループが削除されていることを確認

おわりに

今回は、Azure App Serviceのチュートリアルをそのままワークフロー化することをやってみました。実際に業務に反映するにはいろいろ工夫は必要ですが、Azure App ServiceとGitHub Actionsの使い方を実践的に学ぶには良い感じだと思ったので、別のチュートリアルのワークフロー化もやってみようと思います。

Discussion