はじめに
Java/Spark プロジェクトの Gradle を利用したビルド/デプロイについて、私が試したことをまとめたものです。
(ここで言うSpark
は、分散処理ライブラリのApache Spark
ではなく、Java の Sinatra ライクな Microframework のSpark
のことです)
目次
- Hello World アプリ
- jade テンプレートエンジン
- Grunt/bower による Web パッケージのビルド
- 付録 A. TravisCI によるビルド
- 付録 B. Gradle で docker build
- 付録 C. TravisCI から DockerHub へ docker push
各章でのソースコードは Commits · kaakaa/gradle-frontend-boilerplate から確認できます。
環境
- Java 1.8.0_74
- Gradle 2.12
- spark-core 2.3
- spark-template-jade 2.3
- node.js 4.4.0
付録 A. TravisCI によるビルド
概要
Github への Push を契機にTravis CIでビルドを実行し、実行バイナリの zip/tar ファイルを Github ページへリリースする。
準備
下記を実施しておく。
- TravisCI のアカウントを作成する
- Github のアカウントでサインインできる
- Profileページから、ビルドを実行するリポジトリを選択しておく
- travis-ci/travis.rbをインストールする(要 Ruby 環境)
- 無くても
.travis.yml
を書けば良いのですが、Github の認証情報などの秘密情報を暗号化するのが楽になります
- 無くても
ビルドスクリプト
プロジェクトのルートで下記travis
コマンドを実行し、.travis.yml
という Travis CI のビルド設定ファイルを作成する。
> travis init
> travis setup releases
対話的にプロジェクトの情報を入力していくだけで、.travis.yml
がほぼできあがります。
(自分で.travis.yml
を書いても問題無いです)
language: java // (1) - Javaビルドの設定
jdk:
- oraclejdk8
script: "./gradlew build" // (2) - ビルドコマンド
deploy: // (3) - デプロイ設定
provider: releases
api_key:
secure: ${GITHUB_TOKEN}
file: // (4) - GithubのReleaseページにPushするファイル
- "./build/distributions/gradle-frontend-boilerplate-1.0-SNAPSHOT.tar"
- "./build/distributions/gradle-frontend-boilerplate-1.0-SNAPSHOT.zip"
on:
repo: kaakaa/gradle-frontend-boilerplate
tags: true // (5) - tag付きのコミットのみデプロイが行われるようにする
(1) Java ビルドの設定
travis init
コマンドで Java プロジェクトを選択すると、このように生成される。
デフォルトでは Java のバーージョンに JDK6,7 が指定されているのでoraclejdk8
にしておく。
(2) ビルドコマンド
Travis で実行するビルドタスク指定する。
(3) デプロイ設定
travis setup releases
コマンドで作成される。
(4) Github の Release ページに Push するファイル
ここで指定したファイルが、Github のリリースページにダウンロードできる形で公開される。
今回は、gradle assembleDist
の成果物である zip/tar ファイルがリリースされるようにした。
(5) tag 付きのコミットのみデプロイが行われるようにする
Push するたびにリリースされるのも辛いので、タグ付きコミットのみデプロイが行われるようにする