Java アプリをビルドする
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
パイプラインを使用して自動的に次のことができます。
- Maven、Gradle、またはAnt を使用してプロジェクトをビルドします。
- テストとコード分析ツールを実行します。
- パイプラインと Azure Artifacts にアプリを公開します。
- アプリを Azure App Service、Azure Functions、またはAzure Kubernetes Service にデプロイします。
Android プロジェクトの作業をしている場合は、「Android アプリのビルド、テスト、デプロイ」を参照してください。
前提条件
次の例を実行するには、次の事項が必要です。
GitHub リポジトリを作成する
次のリポジトリを GitHub アカウントにフォークします。
https://github.com/MicrosoftDocs/pipelines-java
パイプラインを作成する
Azure DevOps 組織にサインインし、プロジェクトに移動します。
[パイプライン] に移動し、プロジェクトで最初のパイプラインを作成する場合は [新しいパイプライン] または [パイプラインの作成] を選択します。
最初に、ソース コードの場所として GitHub を選択して、ウィザードの手順を実行します。 サインインするために GitHub にリダイレクトされる場合があります。 その場合は、GitHub の資格情報を入力します。
リポジトリを選択します。 Azure Pipelines アプリをインストールするために、GitHub にリダイレクトされる場合があります。 その場合は、[承認してインストール] を選択します。
[パイプラインの構成] タブが表示されたら、コードのビルド方法に応じて [Maven]、[Gradle]、[Ant] のいずれかを選択します。
azure-pipelines.yml
パイプライン定義を含むファイルがリポジトリに作成され、YAML エディターで開かれます。 パイプラインをカスタマイズするには、タスクを追加するか、既存のタスクを変更します。 ビルド タスクの詳細については、「コードのビルド」を参照してください。azure-pipelines.yml
の編集が完了したら、[保存して実行] を選択します。ファイル
azure-pipelines.yml
をリポジトリにコミットするには、[保存して実行] を再度選択します。
[ジョブ] を選択して、パイプラインの動作を監視します。
[コレクション] に移動し、プロジェクトを選択します。
[パイプライン] を選択し、プロジェクトで最初のパイプラインを作成する場合は [新しいパイプライン] または [パイプラインの作成] を選択します。
最初に、ソース コードの場所として GitHub Enterprise Server を選択し、ウィザードの手順を実行します。
既存の GitHub サービス接続を使用するか、新しいサービス接続を作成します。
サービス接続を作成する:
- [GitHub Enterprise Server に接続する] を選択します。
- GitHub Enterprise Server の URL を入力します。
- お使いの GitHub Enterprise Server 個人用アクセス トークンを入力します。 個人用アクセス トークンがない場合は、GitHub Enterprise Server アカウントに作成できます。 詳細については、「個人用アクセス トークンを作成する」を参照してください。
リポジトリを選択します。 Azure Pipelines アプリをインストールするために、GitHub にリダイレクトされる場合があります。 その場合は、[承認してインストール] を選択します。
[パイプラインの構成] タブが表示されたら、コードのビルド方法に応じて [Maven]、[Gradle]、[Ant] のいずれかを選択します。
azure-pipelines-yml
パイプライン定義を含むファイルがリポジトリに作成され、YAML エディターで開かれます。 パイプラインをカスタマイズするには、タスクを追加するか、既存のタスクを変更します。 ビルド タスクの詳細については、「コードのビルド」を参照してください。azure-pipelines.yml
の編集が完了したら、[保存して実行] を選択します。ファイル
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 の値を調整します (build
や check
など)。 一般的な 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 パイプラインの作成の詳細については、次を参照してください。