Skip to main content
ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

Deploying Python to Azure App Service

You can deploy your Python project to Azure App Service as part of your continuous deployment (CD) workflows.

ノート: GitHubホストランナーは、現在GitHub Enterprise Serverでサポートされていません。 GitHubパブリックロードマップで、計画されている将来のサポートに関する詳しい情報を見ることができます。

はじめに

This guide explains how to use GitHub Actions to build and deploy a Python project to Azure App Service.

必要な環境

GitHub Actionsワークフローを作成する前に、まず以下のセットアップのステップを完了しておかなければなりません。

  1. Azure App Serviceプランの作成

    たとえば、Azure CLIを使って新しいApp Serviceのプランを作成できます。

    Shell
    az appservice plan create \
       --resource-group MY_RESOURCE_GROUP \
       --name MY_APP_SERVICE_PLAN \
       --is-linux

    上のコマンドで、MY_RESOURCE_GROUPはすでに存在するAzure Resource Groupに、MY_APP_SERVICE_PLANはApp Serviceプランの新しい名前に置き換えてください。

    Azure CLIの使いからに関する詳しい情報については、Azureのドキュメンテーションを参照してください。

    • For authentication, see "Sign in with Azure CLI."
    • 新しいリソースグループを作成しなければならない場合は、「az group」を参照してください。
  2. Webアプリケーションの作成

    For example, you can use the Azure CLI to create an Azure App Service web app with a Python runtime:

    Shell
    az webapp create \
        --name MY_WEBAPP_NAME \
        --plan MY_APP_SERVICE_PLAN \
        --resource-group MY_RESOURCE_GROUP \
        --runtime "python|3.8"

    上のコマンドで、パラメータは自分の値で置き換えてください。MY_WEBAPP_NAMEはWebアプリケーションの新しい名前です。

  3. Azure公開プロフィールを設定して、AZURE_WEBAPP_PUBLISH_PROFILEシークレットを作成してください。

    公開されたプロフィールを使って、Azureのデプロイ資格情報を生成してください。 For more information, see "Generate deployment credentials" in the Azure documentation.

    GitHubリポジトリで、公開されたプロフィールの内容を含むAZURE_WEBAPP_PUBLISH_PROFILEという名前のシークレットを生成してください。 シークレットの作成に関する詳しい情報については「暗号化されたシークレット」を参照してください。

  4. Add an app setting called SCM_DO_BUILD_DURING_DEPLOYMENT and set the value to 1.

  5. Optionally, configure a deployment environment. Environments are used to describe a general deployment target like production, staging, or development. When a GitHub Actions workflow deploys to an environment, the environment is displayed on the main page of the repository. You can use environments to require approval for a job to proceed, restrict which branches can trigger a workflow, or limit access to secrets. For more information about creating environments, see "Using environments for deployment."

ワークフローの作成

必要な環境を整えたら、ワークフローの作成に進むことができます。

The following example workflow demonstrates how to build and deploy a Python project to Azure App Service when there is a push to the main branch.

ワークフローのenvキー中のAZURE_WEBAPP_NAMEを、作成したWebアプリケーションの名前に設定してください。 If you use a version of Python other than 3.8, change PYTHON_VERSION to the version that you use.

If you configured a deployment environment, change the value of environment to be the name of your environment. If you did not configure an environment, delete the environment key.

YAML
# このワークフローはGitHubによって認定されていないアクションを使用します。
# それらはサードパーティによって提供され、
# 別個の利用規約、プライバシーポリシー、
# サポートドキュメンテーションが適用されます。

name: Build and deploy Python app to Azure Web App

env:
  AZURE_WEBAPP_NAME: MY_WEBAPP_NAME   # set this to your application's name
  PYTHON_VERSION: '3.8'               # set this to the Python version to use

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Set up Python version
        uses: actions/setup-python@v2
        with:
          python-version: ${{ env.PYTHON_VERSION }}

      - name: Create and start virtual environment
        run: |
          python -m venv venv
          source venv/bin/activate

      - name: Set up dependency caching for faster installs
        uses: actions/cache@v2
        with:
          path: ~/.cache/pip
          key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
          restore-keys: |
            ${{ runner.os }}-pip-

      - name: Install dependencies
        run: pip install -r requirements.txt

      # Optional: Add a step to run tests here (PyTest, Django test suites, etc.)

      - name: Upload artifact for deployment jobs
        uses: actions/upload-artifact@v2
        with:
          name: python-app
          path: |
            .
            !venv/
  deploy:
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'production'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v2
        with:
          name: python-app
          path: .

      - name: 'Deploy to Azure Web App'
        id: deploy-to-webapp
        uses: azure/webapps-deploy@0b651ed7546ecfc75024011f76944cb9b381ef1e
        with:
          app-name: ${{ env.AZURE_WEBAPP_NAME }}
          publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}

追加リソース

以下のリソースも役に立つでしょう。

  • オリジナルのスターターワークフローについては、GitHub Actions starter-workflowsリポジトリ中のazure-webapps-python.ymlを参照してください。
  • Webアプリケーションのデプロイに使われたアクションは、公式のAzure Azure/webapps-deployアクションです。
  • For more examples of GitHub Action workflows that deploy to Azure, see the actions-workflow-samples repository.