Java と Bitbucket Pipelines
このガイドでは、Maven または Gradle をビルド ツールとして使用し、Bitbucket Pipelines を使用して、Docker コンテナで 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 ファイルの先頭で指定して使用できます。
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 イメージの使用例です。
image: maven:3.2.5-jdk-7
利用可能な Maven/JDK バージョンと対応する image タグの一覧については、https://hub.docker.com/r/library/maven/ をご参照ください。
Maven を使用したビルドとテストの実行
Docker イメージを選択したら、Pipelines スクリプトに適切な Maven コマンドを含めるだけでテストを実行できます。簡単な例を次に示します。
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 構成に安全に渡すことができるようにします。
image: maven:3.3.9
pipelines:
branches:
master:
- step:
script:
- bash configure-maven.sh
- mvn -B verify
#!/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
フラグを使用してそれを参照できます。
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 スクリプトは、リポジトリにコミットする前に実行可能にしておくことをおすすめします。
chmod +x gradlew
その後、wrapper を使用して Gradle プロジェクトをビルドできます。
image: openjdk:8
pipelines:
default:
- step:
script:
- bash ./gradlew build
オンライン バリデーターを使用して bitbucket-pipelines.yml ファイルをチェックすることができます。