Java アプリをビルドする

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

パイプラインを使用して自動的に次のことができます。

Android プロジェクトの作業をしている場合は、「Android アプリのビルド、テスト、デプロイ」を参照してください。

前提条件

次の例を実行するには、次の事項が必要です。

  • リポジトリを作成できる GitHub アカウント。 無料で作成できます
  • Azure DevOps Server コレクションへのアクセス。
  • Azure DevOps セルフホステッド エージェントで Azure Pipelines を実行する機能。
  • Azure DevOps プロジェクト。 まだ用意できていない場合は、今すぐプロジェクトを作成してください。

GitHub リポジトリを作成する

次のリポジトリを GitHub アカウントにフォークします。

https://github.com/MicrosoftDocs/pipelines-java

パイプラインを作成する

  1. Azure DevOps 組織にサインインし、プロジェクトに移動します。

  2. [パイプライン] に移動し、プロジェクトで最初のパイプラインを作成する場合は [新しいパイプライン] または [パイプラインの作成] を選択します。

  3. 最初に、ソース コードの場所として GitHub を選択して、ウィザードの手順を実行します。 サインインするために GitHub にリダイレクトされる場合があります。 その場合は、GitHub の資格情報を入力します。

  4. リポジトリを選択します。 Azure Pipelines アプリをインストールするために、GitHub にリダイレクトされる場合があります。 その場合は、[承認してインストール] を選択します。

  5. [パイプラインの構成] タブが表示されたら、コードのビルド方法に応じて [Maven][Gradle][Ant] のいずれかを選択します。

  6. azure-pipelines-ymlパイプライン定義を含むファイルがリポジトリに作成され、YAML エディターで開かれます。 パイプラインをカスタマイズするには、タスクを追加するか、既存のタスクを変更します。 ビルド タスクの詳細については、「コードのビルド」を参照してください。

  7. azure-pipelines.ymlの編集が完了したら、[保存して実行] を選択します。

  8. ファイルazure-pipelines.ymlをリポジトリにコミットするには、[保存して実行] を再度選択します。

[ジョブ] を選択して、パイプラインの動作を監視します。

  1. [コレクション] に移動し、プロジェクトを選択します。

  2. [パイプライン] を選択し、プロジェクトで最初のパイプラインを作成する場合は [新しいパイプライン] または [パイプラインの作成] を選択します。

  3. 最初に、ソース コードの場所として GitHub Enterprise Server を選択し、ウィザードの手順を実行します。

  4. 既存の GitHub サービス接続を使用するか、新しいサービス接続を作成します。

    サービス接続を作成する:

    1. [GitHub Enterprise Server に接続する] を選択します。
    2. GitHub Enterprise Server の URL を入力します。
    3. お使いの GitHub Enterprise Server 個人用アクセス トークンを入力します。 個人用アクセス トークンがない場合は、GitHub Enterprise Server アカウントに作成できます。 詳細については、「個人用アクセス トークンを作成する」を参照してください。
  5. リポジトリを選択します。 Azure Pipelines アプリをインストールするために、GitHub にリダイレクトされる場合があります。 その場合は、[承認してインストール] を選択します。

  6. [パイプラインの構成] タブが表示されたら、コードのビルド方法に応じて [Maven][Gradle][Ant] のいずれかを選択します。

  7. azure-pipelines-ymlパイプライン定義を含むファイルがリポジトリに作成され、YAML エディターで開かれます。 パイプラインをカスタマイズするには、タスクを追加するか、既存のタスクを変更します。 ビルド タスクの詳細については、「コードのビルド」を参照してください。

  8. azure-pipelines.ymlの編集が完了したら、[保存して実行] を選択します。

  9. ファイルazure-pipelines.ymlをリポジトリにコミットするには、[保存して実行] を再度選択します。

[ジョブ] を選択して、パイプラインの動作を監視することができます。

この時点で、動作する YAML パイプライン (azure-pipelines.yml) がリポジトリ内に用意できました。これは、すぐにカスタマイズできます。 パイプラインを変更するには、[パイプライン] ページでそのパイプラインを選び、 ファイルを編集しますazure-pipelines.yml

ビルド環境

Azure Pipelines を使用すると、独自のインフラストラクチャを設定する必要なく Java アプリをビルドできます。 Windows、Linux、または macOS イメージでビルドできます。 Azure Pipelines の Microsoft ホステッド エージェントには、最新の JDK とその他の Java 用のツールがプレインストールされています。 どのバージョンの Java がインストールされているかを確認する場合は、「Microsoft ホステッド エージェント」を参照してください。

適切なイメージw選択するには、azure-pipelines.yml ファイル内の次のスニペットを更新します。

pool:
  vmImage: 'ubuntu-latest' # other options: 'macOS-latest', 'windows-latest'

イメージの完全なリストについては、「Microsoft ホステッド エージェント」を参照してください。

Microsoft ホステッド エージェントを使用する代わりに、Java がインストールされたセルフホステッド エージェントを設定できます。 大規模なリポジトリがある場合や、増分ビルドを実行できる場合は、セルフホステッド エージェントを使用すると時間を節約することもできます。

ビルドはセルフホステッド エージェントで実行されます。 選択したメソッドで構築するために必要な Java とツールがエージェントのホストにインストールされていることを確認します。

パイプライン エディターにある [オプション] タブの [エージェント プール][エージェント使用] セクションで、エージェント プールとエージェント機能を選択できます。

たとえば、Maven 機能のあるエージェント プールとエージェントを指定するには、次のスニペット azure-pipelines.yml ファイルに追加します。

pool: 
  name: MyPool
  demands: maven

コードをビルドする

Maven、Gradle、Ant、またはスクリプトを使用して Java アプリをビルドできます。 次のセクションでは、各メソッドのビルド ステップをパイプラインに追加する方法について説明します。

Maven

Maven ビルドでは、azure-pipelines.yml ファイルに次のタスクが追加されます。 プロジェクトに合わせて値を置き換えます。 タスク オプションの詳細については、Maven task を参照してください。

steps:
- task: Maven@4
  inputs:
    mavenPomFile: 'pom.xml'
    mavenOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: 'default'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
    goals: 'package'

Spring Boot の場合は、Maven タスクも使用できます。 mavenPomFile の値が pom.xml ファイルへのパスを反映していることを確認してください。 たとえば、Spring Boot サンプル リポジトリを使用している場合、パスは complete/pom.xml になります。

ビルド パスのカスタマイズ

リポジトリのルートに pom.xml ファイルがない場合は、mavenPomFile の値を調整します。 ファイル パスの値はリポジトリのルートからの相対パスにする必要があります (IdentityService/pom.xml$(system.defaultWorkingDirectory)/IdentityService/pom.xml など)。

Maven の目標のカスタマイズ

goals 値には、Maven が実行する目標のスペース区切りのリストを設定します (たとえば、clean package)。 一般的な Java のフェーズと目標の詳細は、Apache の Maven ドキュメントを参照してください。

Gradle

Gradle ビルドでは、azure-pipelines.yml ファイルに次のタスクが追加されます。 該当するオプションの詳細については、Gradle タスクを参照してください。

steps:
- task: Gradle@2
  inputs:
    workingDirectory: ''
    gradleWrapperFile: 'gradlew'
    gradleOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: 'default'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
    tasks: 'build'

Gradle ラッパー

リポジトリに gradlew ファイルが必要です。 ない場合は、プロジェクトのルート ディレクトリで gradle wrapper を実行することで生成できます。 Gradle ラッパーの作成についての詳細は、Gradle を参照してください。

Gradle のバージョンの選択

エージェント マシンにインストールされた Gradle のバージョンが使用されますが、ビルド時に別の Gradle バージョンをダウンロードして使用するように指定するgradle/wrapper/gradle-wrapper.properties プロパティがリポジトリの distributionUrl ファイルにある場合を除きます。

ビルド パスの調整

リポジトリのルートに gradlew ファイルがない場合は、workingDirectory の値を調整します。 ディレクトリの値はリポジトリのルートに相対している必要があります (IdentityService$(system.defaultWorkingDirectory)/IdentityService など)。

リポジトリのルートに gradlew ファイルがない場合は、gradleWrapperFile の値を調整します。 ファイル パスの値はリポジトリのルートからの相対パスにする必要があります (IdentityService/gradlew$(system.defaultWorkingDirectory)/IdentityService/gradlew など)。

Gradle タスクの調整する

Gradle で実行する必要のあるタスクの tasks の値を調整します (buildcheck など)。 一般的な Gradle の Java プラグイン タスクの詳細については、Gradle のドキュメントを参照してください。

Ant

Ant ビルドを使用して、azure-pipelines.yml ファイルに次のタスクを追加します。 プロジェクト構成に一致するように、build.xml ファイルへのパスなどの値を変更します。 該当するオプションの詳細については、Ant タスクを参照してください。 サンプル リポジトリを使用する場合は、リポジトリにbuild.xml ファイルを指定する必要があります。

steps:
- task: Ant@1
  inputs:
    workingDirectory: ''
    buildFile: 'build.xml'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: 'default'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: false
    testResultsFiles: '**/TEST-*.xml'

スクリプト

コマンドラインまたはスクリプトでビルドする場合は、azure-pipelines.yml ファイルに次のいずれかのスニペットを追加します。

[インライン スクリプト]

script: ステップでは、Linux と macOS の Bash および Windows のコマンド プロンプトを使用して、インライン スクリプトを実行します。 詳細については、Bash タスクまたはコマンドライン タスクを参照してください。

steps:
- script: |
    echo Starting the build
    mvn package
  displayName: 'Build with Maven'

スクリプト ファイル

このタスクでは、リポジトリ内にあるスクリプト ファイルを実行します。 詳細については、シェル スクリプト タスク、バッチ スクリプト タスク、または PowerShell タスクを参照してください。

steps:
- task: ShellScript@2
  inputs:
    scriptPath: 'build.sh'

次のステップ

ビルド出力をパイプラインに公開できます。 アプリは、Maven パッケージまたは .war/jar ファイルにパッケージ化して公開すると、Web アプリケーションにデプロイできます。

デプロイ ターゲットに応じた CI/CD パイプラインの作成の詳細については、次を参照してください。