Azure DevOps Services |Azure DevOps Server 2022 および Azure DevOps Server 2019
Azure Pipelines を使用して、Java アプリケーションのビルド、テスト、デプロイを自動化します。 この記事では、Maven、Gradle、Ant などのツールを使用して Java プロジェクトのパイプラインを設定する方法について説明します。 また、App Service、Functions、Kubernetes などの Azure サービスにアプリをデプロイする方法についても説明します。
パイプラインを使用して次の手順を実行します。
- Maven、Gradle、または Ant を使用してプロジェクトをビルドします。
- テストとコード分析ツールを実行します。
- パイプラインと Azure Artifacts を使用してアプリを発行します。
- アプリを Azure App Service、Azure Functions、またはAzure Kubernetes Service にデプロイします。
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
パイプラインを作成する
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 がホストするエージェントに関するページを参照してください。
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 の値を調整します (build
や check
など)。 一般的な 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 パイプラインの作成の詳細については、次を参照してください。