Azure App Serviceへのデプロイ

継続的デプロイメント(CD)ワークフローの一部として、Azure App Serviceへのデプロイを行えます。

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

はじめに

このガイドでは、アプリケーションをビルド、テスト、Azure App ServiceへデプロイするためのGitHub Actionsの使い方を説明します。

Azure App Serviceではいくつかの言語でWebアプリケーションを動作させることができますが、このガイドでは既存のNode.jsプロジェクトをデプロイする方法を示します。

必要な環境

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のドキュメンテーションを参照してください。

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

    たとえば、Azure CLIを使ってnodeのランタイムを持つAzure App Service Webアプリケーションを作成できます。

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

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

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

    公開されたプロフィールを使って、Azureのデプロイ資格情報を生成してください。 詳しい情報については、Azureのドキュメンテーションの「デプロイ資格情報を生成する」を参照してください。

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

  4. For Linux apps, add an app setting called WEBSITE_WEBDEPLOY_USE_SCM and set it to true in your app. For more information, see "Configure apps in the portal" in the Azure documentation.

  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, test, and deploy the Node.js project to Azure App Service when there is a push to the main branch.

ワークフローのenvキー中のAZURE_WEBAPP_NAMEを、作成したWebアプリケーションの名前に設定してください。 You can also change AZURE_WEBAPP_PACKAGE_PATH if the path to your project is not the repository root and NODE_VERSION if you want to use a node version other than 10.x.

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によって認定されていないアクションを使用します。
# それらはサードパーティによって提供され、
# 別個の利用規約、プライバシーポリシー、
# サポートドキュメンテーションが適用されます。

on:
  push:
    branches:
      - main

env:
  AZURE_WEBAPP_NAME: MY_WEBAPP_NAME   # set this to your application's name
  AZURE_WEBAPP_PACKAGE_PATH: '.'      # set this to the path to your web app project, defaults to the repository root
  NODE_VERSION: '10.x'                # set this to the node version to use

jobs:
  build-and-deploy:
    name: Build and Deploy
    runs-on: ubuntu-latest
    environment: production

    steps:
      - uses: actions/checkout@v2

      - name: Use Node.js ${{ env.NODE_VERSION }}
        uses: actions/setup-node@v2
        with:
          node-version: ${{ env.NODE_VERSION }}

      - name: npm install, build, and test
        run: |
          # Build and test the project, then
          # deploy to Azure Web App.
          npm install
          npm run build --if-present
          npm run test --if-present

      - name: 'Deploy to Azure WebApp'
        uses: azure/webapps-deploy@0b651ed7546ecfc75024011f76944cb9b381ef1e
        with:
          app-name: ${{ env.AZURE_WEBAPP_NAME }}
          publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
          package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}

追加リソース

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

このドキュメントは役立ちましたか?

プライバシーポリシー

これらのドキュメントを素晴らしいものにするのを手伝ってください!

GitHubのすべてのドキュメントはオープンソースです。間違っていたり、はっきりしないところがありましたか?Pull Requestをお送りください。

コントリビューションを行う

OR, コントリビューションの方法を学んでください。

問題がまだ解決していませんか?