はじめに
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するたびにリリースされるのも辛いので、タグ付きコミットのみデプロイが行われるようにする