Azure DevOpsのパイプラインからAppServiceへのデプロイ

はじめに

本記事では、マイクロソフトから提供されているサンプルWebアプリケーションを使って,Azure DevOpsでのリポジトリの作成~パイプラインの作成からAppServiceの デプロイを行うまでの一連の操作を記載する。

AppServiceにWebアプリケーションを作成

以下の手順で、Webアプリケーションを作成。

DebOpsで組織を作成


DevOps用のプロジェクトの作成


リポジトリの作成

サービスコネクションを作成

サンプルプログラムを取得。

以下のサイトから、サンプルプログラムを取得してZIPダウンロードする。 先程クローンしたローカルリポジトリに展開する。
https://github.com/MicrosoftDocs/pipelines-java

コミットを行い、その後リモートリポジトリにPushする。

$ git add .
$ git commit -m "Sample WebAppを追加"
$ git push   

パイプラインYAML作成

以下のパイプラインを作成する。

trigger:
- master

variables:

  # Azure Resource Manager connection created during pipeline creation
  azureSubscription: '作成したサービスコネクション名を指定'

  # Web app Type
  webAppType : 'webAppLinux'

  # Web app name
  webAppName: 'sample-web-application'

  # Environment name
  environmentName: 'sample-enviroment'

  # Agent VM image name
  vmImageName: 'ubuntu-latest'

stages:
- stage: Build
  displayName: 'Build stage'
  jobs:
  - job: Debug
    displayName: 'Show debug message'

    steps:
    - script: |
        echo "Subscription : $(azureSubscription)"
        echo "Web App Name : $(webAppName)"
        echo "Environment Name : $(environmentName)"
        echo "Vm Image Name : $(vmImageName)"
        echo "Pipeline Workspace Name : $(Pipeline.Workspace)"
        echo "System Default Working directory : $(System.DefaultWorkingDirectory)"
        echo "Artifact Staging Directory : $(Build.ArtifactStagingDirectory)"

  - job: MavenPackageAndPublishArtifacts
    displayName: 'Maven Package and Publish Artifacts'
    pool:
      vmImage: $(vmImageName)

    steps:
    - task: Maven@3
      displayName: 'Maven Package'
      inputs:
        mavenPomFile: 'pom.xml'
        mavenOptions: '-Xmx3072m'
        javaHomeOption: 'JDKVersion'
        jdkVersionOption: '1.11'
        jdkArchitectureOption: 'x64'
        publishJUnitResults: false
        testResultsFiles: '**/TEST-*.xml'
        goals: 'package'

    - 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

- stage: Deploy
  displayName: 'Deploy stage'
  dependsOn: Build
  condition: succeeded()
  jobs:
  - deployment: DeployLinuxWebApp
    displayName: 'Deploy Linux Web App'
    environment: $(environmentName)
    pool:
      vmImage: $(vmImageName)
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            displayName: 'Azure Web App Deploy'
            inputs:
              azureSubscription: $(azureSubscription)
              appType: $(webAppType)
              appName: $(webAppName)
              package: '$(Pipeline.Workspace)/drop/**/target/*.?(war|jar)'


デプロイ後

AppServiceの「開発ツール」でログインして、以下のディレクトリ上にファイルがデプロイされていることを確認する。

ls /home/site/wwwroot/webapps/helloworld

以下のURLにアクセスして、Hello Worldページが表示できることを確認。 https://WEBアプリ名.azurewebsites.net/helloworld