LoginSignup
2
2

More than 5 years have passed since last update.

Gradleでbowerを利用したフロントエンドのビルドまでを行う方法 (6/6)

Last updated at Posted at 2016-03-31

はじめに

Java/SparkプロジェクトのGradleを利用したビルド/デプロイについて、私が試したことをまとめたものです。
(ここで言うSparkは、分散処理ライブラリのApache Sparkではなく、JavaのSinatraライクなMicroframeworkのSparkのことです)

目次

  1. Hello Worldアプリ
  2. jadeテンプレートエンジン
  3. Grunt/bowerによるWebパッケージのビルド
  4. 付録A. TravisCIによるビルド
  5. 付録B. Gradleでdocker build
  6. 付録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

付録C. TravisCIからDockerHubへ docker push

概要

GithubへのPushを契機にTravisCIでDockerビルドを行い、DockerイメージをDockerHubへPushする


TravisCI上ではDocker Remote APIが起動していなさそうなので、先ほど作ったbuildDockerImageタスクは使用せず、普通のdocker buildコマンドでDockerイメージを作成する。

ビルドスクリプト

.travis.yml
sudo: required  // (1) - Dockerを使うことを宣言
services:
- docker
language: java
jdk:
- oraclejdk8
env:  // (2) - Dockerビルド、DockerHubへのPushに使う情報を宣言する
  global:
  - REPO=kaakaa/gradle-frontend-boilerplate
  - COMMIT=${TRAVIS_COMMIT::8}
  - TAG=${COMMIT}
  - secure: <encrypted env>
  - secure: <encrypted env>
  - secure: <encrypted env>

script: "./gradlew build"
deploy:
  provider: releases
  api_key:
    secure: <encrypted repo>
  file:
  - "./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

after_deploy:  // (3) - Dockerビルド、DockerHubへのPushをする
- docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS
- docker build -f Dockerfile -t $REPO:$COMMIT .
- docker tag $REPO:$COMMIT $REPO:$TAG
- docker push $REPO:$COMMIT

(1) Dockerを使うことを宣言

Travisビルドでdockerコマンドを使用するには、この3行が必要。

Using Docker in Builds - Travis CI

(2) Dockerビルド、DockerHubへのPushに使う情報を宣言する

Dockerイメージ名やDockerHubへPushする際の名前の情報などを宣言している。

${TRAVIS_COMMIT}はTravisでのビルドが走る際のgitのコミットIDを示しており、${TRAVIS_COMMIT::8}で、その先頭8文字を取得できる。

Environment Variables - Travis CI

secure文字列はDockerHubへのログイン情報をencryptした文字列。

下記のコマンドで生成できる。

travis encrypt DOCKEREMAIL=hoge@exampl.com --add env.global   
travis encrypt DOCKER_USER=kaakaa --add env.global   
travis encrypt DOCKER_PASS=password --add env.global   

Using Docker in Builds - Travis CI

Encryption keys - Travis CI

(3) Dockerビルド、DockerHubへのPushをする

dockerコマンドを普通に打ってるだけ。

TravisではDocker Remote APIが起動してないのでgradleのbuildDockerImageタスクが使えないのが悲しい。

ビルドスクリプト

build.gradle
build.dependsOn installDist

Travis上で実行しているbuildタスクが、Dockerビルドで必要なファイルを生成するためのinstallDistタスクに依存するよう、どこかに上記1行を追加する。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2