LoginSignup
2
1

More than 1 year has passed since last update.

Azure Web App + GitHub Actionsセルフホストランナー(Proxy越え)でCI/CDを試す

Last updated at Posted at 2021-09-01

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のインストールから行っていますが、事前にセルフホストランナーにインストールしておけば、ログイン手順のみで実現可能です。

以上

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1