次の方法で共有


Java アプリをビルドする

Azure DevOps Services |Azure DevOps Server 2022 および Azure DevOps Server 2019

Azure Pipelines を使用して、Java アプリケーションのビルド、テスト、デプロイを自動化します。 この記事では、Maven、Gradle、Ant などのツールを使用して Java プロジェクトのパイプラインを設定する方法について説明します。 また、App Service、Functions、Kubernetes などの Azure サービスにアプリをデプロイする方法についても説明します。

パイプラインを使用して次の手順を実行します。

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

前提条件

製品
Azure DevOps - Azure DevOps プロジェクト
- Microsoft がホストするエージェントでパイプラインを実行する機能。 並列ジョブを購入するか、Free レベルを要求できます。
- YAML と Azure Pipelines に関する基本的な知識。 詳細については、「最初のパイプラインの作成」を参照してください。
- アクセス許可:
     - パイプラインを作成するには、 共同作成者 グループに含まれている必要があり、グループには [ ビルド パイプラインの作成 ] アクセス許可が [許可] に設定されている必要があります。 プロジェクト管理者グループのメンバーは、パイプラインを管理できます。
    - サービス接続を作成するには、サービス接続の管理者ロールまたは作成者ロールが必要です。
GitHub - GitHub アカウント。
- Azure Pipelines を承認するための GitHub サービス接続
紺碧 Azure サブスクリプション
製品
Azure DevOps - Azure DevOps プロジェクト
- セルフホステッド エージェント。 作成する方法については、「セルフホステッド エージェント」を参照してください。
- YAML と Azure Pipelines に関する基本的な知識。 詳細については、「最初のパイプラインの作成」を参照してください。
- アクセス許可:
    - パイプラインを作成するには、 共同作成者 グループに含まれている必要があり、グループには [ ビルド パイプラインの作成 ] アクセス許可が [許可] に設定されている必要があります。 プロジェクト管理者グループのメンバーは、パイプラインを管理できます。
    - サービス接続を作成するには、サービス接続の管理者ロールまたは作成者ロールが必要です。
GitHub - GitHub アカウント。
- Azure Pipelines を承認するための GitHub サービス接続
紺碧 Azure サブスクリプション

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 がホストするエージェントに関するページを参照してください。

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

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

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

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

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

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

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

pool: 
  name: MyPool
  demands: maven

コードをビルドする

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

メイヴン

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 になります。

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

mavenPomFile ファイルがリポジトリのルートにない場合は、pom.xml値を設定します。 ファイル パスの値は、 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@3
  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 ファイルにある場合を除きます。

ビルド パスの調整

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

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

Gradle タスクの調整する

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

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:の手順では、Bash on Linux と macOS と 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 パイプラインの作成の詳細については、次を参照してください。