Java アプリのビルド

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 | TFS 2017

注意

このガイダンスでは、Azure Pipelines で使用できる YAML ベースのパイプラインを使用します。 TFS の場合は、以下の YAML で使用されているタスクに対応するタスクを使用します。

このガイダンスでは、Java プロジェクトを自動的にビルドする方法について説明します。 (Android プロジェクトで作業している場合は、「 android アプリのビルド、テスト、およびデプロイ」を参照してください)。

最初のパイプラインの作成

Azure Pipelines するのは初めてですか? その場合は、他のセクションに進む前に、このセクションを作成してみることをお勧めします。

コードを取得する

このリポジトリを GitHub にフォークします。

Azure DevOps Server 2019 の Git リポジトリにこのリポジトリをインポートします。

このリポジトリを TFS の Git リポジトリにインポートします。

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

Azure Pipelines にサインインします

Azure Pipelinesにサインインします。 サインインすると、ブラウザーに移動して https://dev.azure.com/my-organization-name Azure DevOps ダッシュボードが表示されます。

選択した組織内で、 プロジェクト を作成します。 組織内にプロジェクトがない場合は、[ 開始するプロジェクトの作成 ] 画面が表示されます。 それ以外の場合は、ダッシュボードの右上隅にある [ プロジェクトの作成 ] ボタンを選択します。

パイプラインを作成する

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

  2. [ パイプライン] にアクセスし、[ 新しいパイプライン] を選択します。

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

  4. サインインするために GitHub にリダイレクトされる場合があります。 その場合は、GitHub の資格情報を入力します。

  5. リポジトリの一覧が表示されたら、リポジトリを選択します。

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

[ 構成 ] タブが表示されたら、[ Maven] を選択します。

  1. 新しいパイプラインが表示されたら、YAML でその動作を確認します。 準備ができたら、[ 保存して実行] を選択します。

    新しい YAML パイプラインでの [保存して実行] ボタン

  2. 新しい azure-pipelines ファイルをリポジトリにコミットするように求めるメッセージが表示されます。 メッセージが表示されたら、[ 保存して再度実行 する] を選択します。

    パイプラインの動作を監視する場合は、[ビルド] ジョブを選択します。

    自分で自動的に作成されたパイプラインを作成して実行しました。これは、コードが Maven テンプレートに適したものであると考えられたためです。

    これで、お客様がカスタマイズできるようにするための機能を備えた既製のパイプライン () がリポジトリに作成されました azure-pipelines.yml

  3. パイプラインを変更する準備ができたら、[ パイプライン ] ページでそれを選択し、ファイルを 編集azure-pipelines.yml ます。

  4. パイプラインをカスタマイズするための一般的な方法のいくつかについては、以下のセクションを参照してください。

  1. パイプラインを作成します (方法がわからない場合は、「 最初のパイプラインを作成する」を参照し、テンプレートには [ Maven] を選択します)。 このテンプレートは、サンプルリポジトリでコードをビルドするために必要なタスクを自動的に追加します。

  2. パイプラインを保存し、ビルドをキューに格納します。 [ビルド #nnnnnnnn] が [ キューに登録されています ] というメッセージが表示されたら、[number] リンクを選択して、パイプラインの動作を確認します。

    これで、カスタマイズできる動作中のパイプラインが完成しました。

  3. パイプラインを変更する準備ができたら、それを 編集 します。

  4. パイプラインをカスタマイズするための一般的な方法のいくつかについては、以下のセクションを参照してください。

ビルド環境

Azure Pipelines を使用すると、独自のインフラストラクチャをセットアップしなくても、Java アプリを構築できます。 Windows、Linux、または MacOS イメージでビルドできます。 Azure Pipelines の Microsoft がホストするエージェントには、最新の Jdk および Java 用のその他のツールがプレインストールされています。 インストールされている Java のバージョンを確認するには、「 Microsoft がホストするエージェント」を参照してください。

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

pool:
  vmImage: 'ubuntu-16.04' # other options: 'macOS-10.14', 'vs2017-win2016'

イメージの完全な一覧については、「 Microsoft がホストするエージェント 」を参照してください。

Microsoft がホストするエージェントを使用する代わりに、Java がインストールされた 自己ホスト型エージェント を設定することもできます。 また、大規模なリポジトリがある場合や、インクリメンタルビルドを実行する場合は、自己ホスト型エージェントを使用して時間を節約することもできます。

ビルドは 自己ホスト型エージェントで実行されます。 エージェントに Java がインストールされていることを確認します。

コードをビルドする

Maven

Maven でビルドするには、次のスニペットをファイルに追加し azure-pipelines.yml ます。 プロジェクトの構成に合わせて、ファイルのパスなどの値を変更し pom.xml ます。 これらのオプションの詳細については、 Maven のタスクを参照してください。

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

ビルドパスをカスタマイズする

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

Maven の目標をカスタマイズする

[ 目標 ] の値を、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: '1.11'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: false
    testResultsFiles: '**/TEST-*.xml'
    tasks: 'build'

Gradle のバージョンを選択する

リポジトリのファイルに、 gradle/wrapper/gradle-wrapper.properties distributionUrl ビルド時にダウンロードして使用する別の Gradle バージョンを指定するプロパティが含まれていない場合は、エージェントコンピューターにインストールされている Gradle のバージョンが使用されます。

ビルドパスを調整する

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

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

Gradle タスクの調整

やなど、Gradle が実行するタスクの タスク 値を調整し build check ます。

Gradle の一般的な Java プラグインタスクの詳細については、 Gradle のドキュメントを参照してください。

Ant

Ant を使用してビルドするには、次のスニペットをファイルに追加し azure-pipelines.yml ます。 プロジェクトの構成に合わせて、ファイルのパスなどの値を変更し build.xml ます。 これらのオプションの詳細については、 Ant タスクを参照してください。

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

スクリプト

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

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

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

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

スクリプト ファイル

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

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

次の手順

アプリをビルドしてテストした後、ビルド出力を Azure Pipelines または TFS にアップロードしたり、Maven パッケージを作成して発行したり、ビルド出力を war/jar ファイルにパッケージ化して web アプリケーションに配置したりすることができます。

次に、選択したデプロイターゲットの CI/CD パイプラインを作成する方法について、さらに学習することをお勧めします。