演習 - Spring Boot サンプル アプリケーションをデプロイする

完了

この演習では、自動化されたワークフローを使用して、Spring Boot サンプル アプリケーションをビルドしてデプロイします。

サンプル アプリケーションをデプロイするための GitHub アクションを設定する

Azure リソースをプロビジョニングしたので、サンプルの Spring Boot アプリケーションをデプロイできます。

Maven GitHub ワークフローを作成するには、Azure App Service ポータルのデプロイ センターで使用できる組み込みの継続的インテグレーションおよび継続的デリバリー (CI/CD) ウィザード ツールを使用します。

Azure App Service デプロイ センターのスクリーンショット。

Azure App Service Deployment Center によって、アプリケーション スタックに基づく GitHub Actions ワークフロー ファイルが自動的に生成されます。 その後、デプロイ センターによって、正しいディレクトリ内の GitHub リポジトリにファイルがコミットされます。 デプロイ センターは、GitHub アクションを Azure App Service 発行プロファイルにもリンクします。

  1. Azure portal で、Azure App Service Web アプリに移動します。

  2. 左側のウィンドウで、[ 展開 ] を展開し、[ 展開センター] を選択します。

  3. [ ソース ] ドロップダウンの [ 継続的デプロイ (CI/CD)] で、 GitHub を選択します。

  4. [GitHub Actions] を選択します。 (これは既定値にする必要がありますが、そうでない場合は、[ プロバイダーの変更 ] を選択してプロバイダー オプションを読み込みます)。

  5. [ 設定] のドロップダウン リストで、次の操作を行います。

    a. 使用する GitHub リポジトリを選択します。
    b。 ブランチの場合は、main を選択 します
    c. アプリケーション スタックの場合は、 JAVA 8 を選択します。

  6. 最後のページで、選択内容を確認し、リポジトリにコミットされるワークフロー ファイルをプレビューします。

  7. [保存] を選択してワークフロー ファイルをリポジトリにコミットし、すぐにアプリのビルドとデプロイを開始します。

    リポジトリで GitHub Actions ワークフローをトリガーすることもできます。[ アクション ] タブを選択し、 ビルドとデプロイの ワークフローを選択してから、[ ジョブの再実行] を選択します。

GitHub Actions ビルドを確認する

  1. GitHub リポジトリで [ アクション ] タブを選択し、左側の [ すべてのワークフロー] で [Azure Web App に JAR アプリをビルドしてデプロイする] を選択します。

  2. 次に、右側のテーブルの [ ワークフローの実行] で、ワークフロー実行の [App Service デプロイ ワークフロー構成の追加または更新] を選択します。

  3. ワークフローの実行が完了するまで待ってから、ワークフロー実行の デプロイ ジョブで、Azure Web アプリの URL を表示する デプロイ ジョブの URL をコピーします。

  4. 最後に、ブラウザーで URL を開き、Java アプリケーションがデプロイされ、MySQL データベースに接続され、データが返されていることを確認します。

次のステップ

おめでとうございます! これで、プロビジョニング アクションとビルドアンドデプロイ アクションという 2 つの GitHub Actions ワークフローが作成されました。

コードをコミットする git push コマンドを入力するたびに、ビルドと配置のアクションがトリガーされ、アプリケーションがデプロイされます。

Von Bedeutung

GitHub アクションのプロビジョニングを再実行しても、リソースが既に存在する場合は再作成されません。 リソース グループまたはリソースを手動で削除してから、GitHub アクションを再実行する必要があります。

ビルドとデプロイの GitHub アクションを再実行すると、アプリケーションが置き換えられます。

App Service インスタンスを再作成する場合は、新しい発行プロファイルに変更する必要もあります。 次の行のみを変更する必要があります。

publish-profile: ${{ secrets.AzureAppService_PublishProfile_c1ee8d191003493b9c9e13a9b78ad2c3 }}

サンプル アプリケーションをデプロイするように Azure Pipeline を設定する

前と同様に、アプリケーションをビルドしてデプロイするための Azure Pipeline を作成する必要があります。

Azure DevOps で、プロジェクトに移動し、[パイプライン] を選択し、[新しいパイプライン] (右上隅) を選択します。

これで、パイプラインを設定するための 4 つのタブが表示されます。

  1. [接続] タブで、[GitHub] (YAML ファイル) を選択します。
  2. [選択] タブで、テンプレートを含む GitHub リポジトリを選択します。
  3. [構成] タブで、"既存の Azure Pipelines YAML ファイル" を使用することを選択します。
  4. パスで、今回は "/azuredevops/build_deploy.yml" を選択します
  5. [ 続行] を選択して [*Review] タブに移動し、パイプラインを実行する前に確認します。

パイプライン YAML の確認 画面で、パイプラインの作成に使用する Yaml ファイルを調べます。

name: Build and Deploy

trigger:
- main

stages:

# Build your Spring Boot App using Maven
- stage: Build
  displayName: Build stage
  jobs:
  - job: MavenPackageAndPublishArtifacts
    displayName: Maven Package and Publish Artifacts
    pool:
      vmImage: 'ubuntu-latest'

    steps:
    - task: Maven@3
      displayName: 'Maven Package'
      inputs:
        mavenPomFile: 'pom.xml'

    - task: CopyFiles@2
      displayName: 'Copy Files to artifact staging directory'
      inputs:
        SourceFolder: '$(System.DefaultWorkingDirectory)'
        Contents: '**/target/*.?(war|jar)'
        TargetFolder: $(Build.ArtifactStagingDirectory)

    - upload: $(Build.ArtifactStagingDirectory)
      artifact: drop

# Deploy to Azure using the AzureWebApp task using your Service Connection
- stage: Deploy
  displayName: Deploy stage
  dependsOn: Build
  condition: succeeded()
  jobs:
  - deployment: DeployLinuxWebApp
    displayName: Deploy Linux Web App
    environment: 'production'
    pool:
      vmImage: 'ubuntu-latest'
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            displayName: 'Azure Web App Deploy'
            inputs:
              azureSubscription: $(serviceConnection)
              appType: webAppLinux
              appName: '$(webAppName)'
              package: '$(Pipeline.Workspace)/drop/**/target/*.?(war|jar)'

"ビルド" 構成で使用するフィールドをいくつか見てみましょう。

  • azureSubscription: Azure サブスクリプション
  • appType: Web アプリの種類
  • appName: 既存の App Service の名前
  • package: パッケージへのファイル パス、またはアプリ サービスの内容を含むフォルダー

ビルド変数の追加

プロビジョニング パイプラインと同様に、ビルドアンドデプロイ パイプラインを保存して実行する前に、パイプラインの変数を追加する必要があります。

  1. 右上にある [変数] を選択します。
  2. serviceConnection という名前の変数を、サービス接続の名前として値と共に追加します。
  3. 右下隅にある [ OK] を 選択して変数を保存します。
  4. App Service 名 (Terraform 変数 "application_name" で定義されているのと同じ値) を使用して 、webAppName という名前の 2 つ目の変数を追加します。
  5. [ OK] を 選択して変数を保存します。
  6. 右下隅にある [保存] を選択して、両方の変数を保存します。

新しい変数を表示するスクリーンショット。

パイプラインの実行を監視する

  1. [>] を選択してパイプラインを保存して実行する
  2. プロビジョニング パイプラインの場合と同様に、各ステージと手順を通じてビルド プロセスをトレースします。
  3. Java アプリケーションがデプロイされ、MySQL データベースに接続され、データが返されることを確認します。

新しい Azure Pipeline の実行を示すスクリーンショット。

次のステップ

おめでとうございます! これで、プロビジョニング パイプラインとビルドアンドデプロイ パイプラインという 2 つの Azure Pipeline ワークフローが作成されました。

git push コマンドを入力してコードをメイン ブランチにコミットするたびに、ビルドとデプロイのパイプラインがトリガーされ、アプリケーションがデプロイされます。

Von Bedeutung

プロビジョニング パイプラインを再実行しても、リソースが既に存在する場合は再作成されません。 リソース グループまたはリソースを手動で削除してから、パイプラインを再実行する必要があります。 運用環境でこれを実現する方法の詳細については、「概要」セクションを参照してください。

ビルドとデプロイのパイプラインを再実行すると、アプリケーションが置き換えられます。

次のユニットでは、このモジュールで学習した内容を確認するための知識チェックを行います。