次の方法で共有


チュートリアル: Jenkins と Azure CLI を使用して Azure App Service にデプロイする

重要

多くの Azure サービスには Jenkins プラグインが用意されていますが、これらのプラグインのほとんどは 2024 年 2 月 29 日の時点でサポートを終了しました。 Azure CLI は、Jenkins と Azure サービスを統合するための現在推奨されている方法です。 詳細については、 Azure の Jenkins プラグインに関する記事を参照してください。

Java Web アプリを Azure にデプロイするには、 Jenkins パイプラインで Azure CLI を使用できます。 このチュートリアルでは、次のタスクを実行します。

  • Jenkins VM を作成する
  • Jenkins の構成
  • Azure で Web アプリを作成する
  • GitHub リポジトリを準備する
  • Jenkins パイプラインを作成する
  • パイプラインを実行して Web アプリを確認する

[前提条件]

  • Azure サブスクリプション:Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

Jenkins の構成

次の手順では、必要な Java JDK と Maven を Jenkins コントローラーにインストールする方法を示します。

  1. SSH を使用して Jenkins コントローラーにサインインします。

  2. apt-get リポジトリから Azure 用 OpenJDK の Azul Zulu ビルドをダウンロードしてインストールします。

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9
    sudo apt-add-repository "deb http://repos.azul.com/azure-only/zulu/apt stable main"
    sudo apt-get -q update
    sudo apt-get -y install zulu-8-azure-jdk
    
  3. 次のコマンドを実行して Maven をインストールします。

    sudo apt-get install -y maven
    

Jenkins 資格情報に Azure サービス プリンシパルを追加する

次の手順では、Azure 資格情報を指定する方法を示します。

  1. 資格情報プラグインがインストールされていることを確認します。

  2. Jenkins ダッシュボードで、[ 資格情報] -> [システム - >] を選択します。

  3. グローバル資格情報 (無制限) を選択します。

  4. [ 資格情報の追加] を選択して 、Microsoft Azure サービス プリンシパルを追加します。 資格情報の種類が パスワードを持つユーザー名 であることを確認し、次の項目を入力します。

    • ユーザー名: サービス プリンシパル appId
    • パスワード: サービス プリンシパル password
    • ID: 資格情報識別子 ( AzureServicePrincipal など)

Java Web アプリをデプロイするための Azure App Service を作成する

az appservice plan create を使用して、FREE 価格レベルで Azure App Service プランを作成します。

az appservice plan create \
    --name <app_service_plan> \ 
    --resource-group <resource_group> \
    --sku FREE

重要なポイント:

  • appservice プランでは、アプリのホストに使用される物理リソースを定義します。
  • appservice プランに割り当てられているすべてのアプリケーションは、これらのリソースを共有します。
  • Appservice プランを使用すると、複数のアプリをホストするときにコストを節約できます。

Azure Web アプリを作成する

az webapp create を使用して、myAppServicePlan App Service プランで Web アプリ定義を作成します。

az webapp create \
    --name <app_name> \ 
    --resource-group <resource_group> \
    --plan <app_service_plan>

重要なポイント:

  • Web アプリ定義は、アプリケーションにアクセスするための URL を提供し、コードを Azure にデプロイするためのいくつかのオプションを構成します。
  • <app_name>プレースホルダーを一意のアプリ名に置き換えます。
  • アプリ名は、Web アプリの既定のドメイン名の一部です。 そのため、名前は Azure 内のすべてのアプリで一意である必要があります。
  • カスタム ドメイン名エントリは、ユーザーに公開する前に Web アプリにマップできます。

Java の構成

az appservice web config update を使用して、アプリの Java ランタイム構成を設定します。

az webapp config set \ 
    --name <app_name> \
    --resource-group <resource_group> \ 
    --java-version 1.8 \ 
    --java-container Tomcat \
    --java-container-version 8.0

GitHub リポジトリを準備する

  1. Simple Java Web App for Azure リポジトリを開きます。

  2. [フォーク] ボタンを選択して、リポジトリを独自の GitHub アカウントにフォークします。

  3. ファイル名をクリックして Jenkinsfile ファイルを開きます。

  4. 鉛筆アイコンを選択してファイルを編集します。

  5. サブスクリプション ID とテナント ID を更新します。

      withEnv(['AZURE_SUBSCRIPTION_ID=<subscription_id>',
            'AZURE_TENANT_ID=<tenant_id>']) 
    
  6. 22 行目と 23 行目の Web アプリのリソース グループと名前をそれぞれ更新します。

    def resourceGroup = '<resource_group>'
    def webAppName = '<app_name>'
    
  7. Jenkins インスタンスの資格情報 ID を更新する

    withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
    

Jenkins パイプラインを作成する

Jenkins パイプラインを作成するには、次の操作を行います。

  1. Web ブラウザーで Jenkins を開きます。

  2. [新しい項目] を選択します。

  3. ジョブの名前を入力します。

  4. [パイプライン] を選択します。

  5. [OK] を選択.

  6. [パイプライン] を選択します。

  7. [定義] で、SCM から [パイプライン スクリプト] を選択します。

  8. SCM の場合は、Git を選択します

  9. フォークされたリポジトリの GitHub URL を入力します。 https:\<forked_repo\>.git

  10. [保存] を選びます。

パイプラインをテストする

  1. 作成したパイプラインに移動します

  2. [ 今すぐビルド] を選択する

  3. ビルドが完了したら、[ コンソール出力 ] を選択してビルドの詳細を表示します。

Web アプリを確認する

WAR ファイルが Web アプリに正常にデプロイされていることを確認するには、次の手順を実行します。

  1. 次の URL を参照します。 http://&lt;app_name>.azurewebsites.net/api/calculator/ping

  2. 次のようなテキストが表示されます。

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  3. 次の URL を開いて、xyを加算する2つの値に置き換えてください: http://app_name.azurewebsites.net/api/calculator/add?x=x&y=y.

    デモの追加を実行する例

Azure App Service on Linux へのデプロイ

App Service では、サポートされているアプリケーション スタック向けに Web アプリを Linux 上でネイティブにホストすることもできます。 また、カスタム Linux コンテナー (Web App for Containers とも呼ばれます) を実行することもできます。

スクリプトを変更して、Azure App Service on Linux にデプロイできます。 App Service on Linux では Docker がサポートされています。 そのため、サービス ランタイムを使用して Web アプリを Docker イメージにパッケージ化する Dockerfile を提供します。 プラグインによってイメージがビルドされ、Docker レジストリにプッシュされ、Web アプリにイメージがデプロイされます。

  1. カスタム コンテナーを使用した Azure App Service へのカスタム ソフトウェアの移行に関するページを参照して、Azure App Service on Linux と Azure Container Registry を作成します。

        az group create --name myResourceGroup2 --___location westus2
        az acr create --name myACRName --resource-group myResourceGroup2 --sku Basic --admin-enabled true
        az appservice plan create --name myAppServicePlan --resource-group  myResourceGroup2 --is-linux
        az webapp create --resource-group myResourceGroup2 --plan myAppServicePlan --name myApp --deployment-container-image-name myACRName.azurecr.io/calculator:latest
    
  2. Jenkins に Docker をインストールします

  3. Docker Pipeline プラグインがインストールされていることを確認します。

  4. フォークしたのと同じ Simple Java Web App for Azure リポジトリで、 Jenkinsfile2 ファイルを次のように編集します。

    1. サブスクリプション ID とテナント ID を更新します。

       withEnv(['AZURE_SUBSCRIPTION_ID=<mySubscriptionId>',
              'AZURE_TENANT_ID=<myTenantId>']) {
      
    2. リソース グループ、Web アプリ、ACR の名前に更新します (プレースホルダーを実際の値に置き換えます)。

      def webAppResourceGroup = '<resource_group>'
      def webAppName = '<app_name>'
      def acrName = '<registry>'
      
    3. <azsrvprincipal\>を資格情報 ID に更新する

      withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
      
  5. Jenkinsfile2を使用して Windows の Azure Web アプリにデプロイする場合と同様に、新しい Jenkins パイプラインを作成します。

  6. 新しいジョブを実行します。

  7. 確認するには、Azure CLI で次のコマンドを実行します。

    az acr repository list -n <myRegistry> -o json
    

    次のような結果が表示されます。

    [
    "calculator"
    ]
    
  8. http://<app_name>.azurewebsites.net/api/calculator/pingを参照します (プレースホルダーを置き換えます)。 次のような結果が表示されます。

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  9. ブラウザでhttp://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y>にアクセスしてください(プレースホルダーを置き換えてください)。 xyに指定した値が合計され、表示されます。

次のステップ