Azure Web AppとGitHub Actionsの連携は、公式マニュアル が公開されており非常に簡単に実現できます。
今回試したのは、GitHub Actionsセルフホストランナーを使って、且つランナーの配置先がProxy環境下のケースでやってみました。
前提条件
- Azure Web Appとセルフホストランナーの作成手順は割愛します
- Java(Spring Boot)で試しています
- セルフホストランナーにはmavenを事前にインストールしています
pom.xml準備
- Azure Web Appにデプロイできるようpom.xmlを準備しておきます。Azureプラグイン部分のみ抜粋します。
- いきなり運用スロットにデプロイするのではなく、stagingスロットにデプロイするようにしています。
~ 省略 ~
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>2.0.0</version>
<configuration>
<schemaVersion>v2</schemaVersion>
<subscriptionId>[Your Subscription ID]</subscriptionId>
<resourceGroup>[Your ResourceGroup Name]</resourceGroup>
<appName>[Your Web App Name]</appName>
<pricingTier>P1v2</pricingTier>
<region>japaneast</region>
<runtime>
<os>Linux</os>
<javaVersion>Java 8</javaVersion>
<webContainer>Java SE</webContainer>
</runtime>
<deployment>
<resources>
<resource>
<directory>${project.basedir}/target</directory>
<includes>
<include>*.jar</include>
</includes>
</resource>
</resources>
</deployment>
<deploymentSlot>
<name>staging</name>
<configurationSource></configurationSource>
</deploymentSlot>
</configuration>
</plugin>
~ 省略 ~
GitHub Secrets作成
- GitHubリポジトリの[Settings]-[Secrets]から[New repository secret]を選択し、KeyValue形式でシークレットを作成します。
- ActionsのYAMLファイルからは
${{ secrets.[Your Secret Name] }}
の形式で利用することができます。
GitHub Actionsワークフロー定義作成
GitHubリポジトリに .github/workflows
ディレクトリを作成し、YAMLファイルを作成します。ファイル名は任意です。
name: Build and deploy JAR app to Azure Web App
on:
push:
branches:
- main
workflow_dispatch:
jobs:
build:
runs-on: [Your Self-hosted Runner Name]
steps:
- uses: actions/checkout@v2
- name: Set up Java version
uses: actions/setup-java@v1
with:
java-version: '8'
- name: Install Azure CLI
run: curl -sL https://aka.ms/InstallAzureCLIDeb | bash
- name: Azure CLI Login
run: az login --service-principal --username ${{ secrets.APP_ID }} --password ${{ secrets.PASSWORD }} --tenant ${{ secrets.TENANT_ID }}
- name: Build with Maven
run: mvn package --file ./complete/pom.xml -Dhttps.proxyHost=${{ secrets.proxyHost }} -Dhttps.proxyPort=${{ secrets.proxyPort }}
deploy:
runs-on: [Your Self-hosted Runner Name]
needs: build
steps:
- name: Set up Java version
uses: actions/setup-java@v1
with:
java-version: '8'
- name: Deploy to Azure Web App
run: mvn package --file ./complete/pom.xml azure-webapp:deploy -Dhttps.proxyHost=${{ secrets.proxyHost }} -Dhttps.proxyPort=${{ secrets.proxyPort }}
- ここまで準備してmainブランチを更新すると、指定したWebAppのstagingスロットにデプロイされるはずです。
-
公式マニュアル 通りにやると、
Azure/webapps-deploy@v2
アクションを使うことで簡単にデプロイできますが、proxy指定をすることができなかったためAzure CLIを使ってデプロイしています。mvn package azure-webapp:deploy
をするためにAzure CLIで事前にログインをしています。 - 今回Azure CLIのインストールから行っていますが、事前にセルフホストランナーにインストールしておけば、ログイン手順のみで実現可能です。
以上