Java と Bitbucket Pipelines

このガイドでは、Maven または Gradle をビルド ツールとして使用し、Bitbucket Pipelines を使用して、Docker コンテナで Java ソフトウェア プロジェクトをビルドおよびテストする方法について説明します。

実際に動作するパイプラインを持つデモ リポジトリをインポートしたい場合、デモ用の java リポジトリをご参照ください。

手動でセットアップしたい場合、構成の大部分は Pipelines がビルドを定義するために使用する bitbucket-pipelines.yml ファイル内で行います。

Maven プロジェクトのビルドとテスト

Docker で Maven のバージョンを指定する

Bitbucket Pipelines は、構成ファイルの最初に指定したイメージを使用し、すべてのビルドを Docker コンテナで実行します。Docker Hub にあるいずれかの公式 Maven Docker イメージを使用することで、Bitbucket Pipelines で簡単に Maven を使用できます。

たとえば Maven 3.3.9 (この記事の執筆時点での最新バージョン) を bitbucket-pipelines.yml ファイルの先頭で指定して使用できます。

1 2 3 4 5 6 image: maven:3.3.9 pipelines: default: - step: script: - mvn -version

オンライン バリデーターを使用して bitbucket-pipelines.yml ファイルをチェックすることができます。

Java および JDK バージョン

既定では、Maven イメージには Java JDK の最新の公式バージョンが含まれますが、特定の Maven バージョンを使用することで別のバージョンを指定することもできます。以下は、JDK 1.7 を搭載した Maven 3.2.5 の Docker イメージの使用例です。

1 image: maven:3.2.5-jdk-7

利用可能な Maven/JDK バージョンと対応する image タグの一覧については、https://hub.docker.com/r/library/maven/ をご参照ください。

Maven を使用したビルドとテストの実行

Docker イメージを選択したら、Pipelines スクリプトに適切な Maven コマンドを含めるだけでテストを実行できます。例:

1 2 3 4 5 6 image: maven:3.3.9 pipelines: default: - step: script: - mvn -B verify # -B batch mode makes Maven less verbose

Maven のプライベート リポジトリ

Maven のプライベート リポジトリにアクセスするには、Maven の既定の settings.xml (Docker イメージの /usr/share/maven/conf/settings.xml にあります) をオーバーライドする必要があります。

この例を使用する前に、MAVEN_USERNAME および MAVEN_PASSWORD の 2 つのセキュアな環境変数を設定して、これらの値を Pipelines 構成に安全に渡すことができるようにします。

bitbucket-pipelines.yml

1 2 3 4 5 6 7 8 9 image: maven:3.3.9 pipelines: branches: main: - step: script: - bash configure-maven.sh - mvn -B verify

configure-maven.sh

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #!/bin/bash sed -i~ "/<servers>/ a\ <server>\ <id>private-repo</id>\ <username>${MAVEN_USERNAME}</username>\ <password>${MAVEN_PASSWORD}</password>\ </server>" /usr/share/maven/conf/settings.xml sed -i "/<profiles>/ a\ <profile>\ <id>private-repo</id>\ <activation>\ <activeByDefault>true</activeByDefault>\ </activation>\ <repositories>\ <repository>\ <id>private-repo</id>\ <url>https://example.com/path/to/maven/repo/</url>\ </repository>\ </repositories>\ <pluginRepositories>\ <pluginRepository>\ <id>private-repo</id>\ <url>https://example.com/path/to/maven/repo/</url>\ </pluginRepository>\ </pluginRepositories>\ </profile>" /usr/share/maven/conf/settings.xml

Maven の settings.xml のカスタマイズ

sed を使用して既定の settings.xml にさらに高度な変更を加えることは非常に難しいため、独自の settings.xml を Bitbucket リポジトリにコミットすることをおすすめします。その後、Maven の -s フラグを使用してそれを参照できます。

1 2 3 4 5 6 image: maven:3.3.9 pipelines: default: - step: script: - mvn -s settings.xml # e.g. with settings.xml in the root of the project

Gradle プロジェクトのビルドとテスト

リポジトリに Gradle Wrapper を追加する

アトラシアン (および Gradle) では、Gradle プロジェクトをビルドする際に、Gradle Wrapper をリポジトリにコミットすることを推奨しています。

Gradle Wrapper は、次の 2 つを保証します。

  • プロジェクトをビルドするための、ビルド環境への Gradle の手動インストールは不要

  • プロジェクトは常に同じ Gradle バージョンでビルドされる

wrapper スクリプトは、リポジトリにコミットする前に実行可能にしておくことをおすすめします。

1 chmod +x gradlew

その後、wrapper を使用して Gradle プロジェクトをビルドできます。

bitbucket-pipelines.yml

1 2 3 4 5 6 image: openjdk:8 pipelines: default: - step: script: - bash ./gradlew build

アトラシアンのオンライン バリデーターでご使用の bitbucket-pipelines.yml ファイルをチェックすることができます。

その他のヘルプ