14
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

herokuAdvent Calendar 2018

Day 3

BitBucketのパイプラインを使ってHerokuにJavaをPushした話

Last updated at Posted at 2018-06-30

初投稿です。文章が読みづらいかもしれませんが宜しくお願い致します。

#モチベーション
せっかくだからGitにpushしたら自動でHerokuにデプロイするようにしたい。
でもGitHubはマイクロソフトに買収された課金しないとpublicだから見られたくないもんも見られちゃう。
BitBucketはprivateだからその辺うまくいきそう。

#前提

  • STS使ってSpringBootでプロジェクト作ります(当方eclipseにSTSプラグインを入れております)
  • bitbucketのアカウント作成を済ませておきます
  • Herokuのアカウント作成を済ませておきます
  • HerokuCLI導入済です
  • Gitが使えます(eclipseのGitプラグインでもOK)

#さっそくやってみる
#まずはHerokuの準備
HerokuCLIからでもWebアプリ管理画面上からでもよいので任意のプロジェクトを作成
HerokuのAPIキーを控えておく(Account Settings画面から確認できる)
#続いてBitBucketのリポジトリ作成
リポジトリクリエイト→GitCloneでURLを控えておく
#Javaのプロジェクト作成
右クリック→新規→新規Springスタータープロジェクトで作成
以後作ったプロジェクト名はSampleProjectとして、各ファイル内の変数名もSampleProjectとしていますが、
そこは自分のプロジェクト名に読み替えてください。

SampleProject
├─src/main/java
├─src/main/resources
│ └─application.properties
├─mvnw
├─mvnw.cmd
└─pom.xml

上記のようなパッケージ構成になっていればOK
ここからBitBucketとHeroku特有ファイル作成&修正

system.properties(新設)
java.runtime.version=1.8
Procfile(新設)
web: java -jar target/SampleProject-0.0.1jar --server.port=${PORT}
pom.xml(修正)
<artifactId>SampleProject</artifactId>
	<version>0.0.1</version>
	<packaging>jar</packaging>

pom.xmlのPackagingをjarに修正
pom.xmlのartifactId&version名がProcfileと同様になっていることを確認

application.properties(修正)
下記記載を追加

server.port=${PORT:5000}
bitbucket-pipelines.yml(新設)
# This is a sample build configuration for Java (Maven).
# Check our guides at https://confluence.atlassian.com/x/zd-5Mw for more examples.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.
image: maven:3.3.9

pipelines:
  default:
    - step:
        caches:
          - maven
        script: # Modify the commands below to build your repository.
          #- mvn -B verify # -B batch mode makes Maven less verbose
          - git push https://heroku:"HerokuのAPIキー"@git.heroku.com/"Herokuのプロジェクト名".git HEAD

##それぞれのファイルの説明
###system.properties
Heroku側でmavenプロジェクトをビルド後実行するために必要な設定ファイル
###Procfile
Heroku側でプロジェクトを実行するために必要なファイル。実行コマンドを記載
因みに、mavenプロジェクトではmvn buildを実行するとプロジェクト直下のtargetフォルダ内に、ビルド結果ファイル(今回はjar)を格納する。これを実行する指定をしている
###pom.xml
mvn buildのゴールをjarに変更(デフォルトはwarだった気が)
###application.properties
heroku側のサーバーポートは5000らしいのでこのように記載(公式に書いてある通り)
###bitbucket-pipelines.yml
bitbucketに備わっているパイプライン機能を利用。
bitbucketのmasterブランチにプッシュされると、自動でyamlに記載の処理を実行する
ここでは、今回はjavaをmaven管理しているので、
 ①冒頭でmavenプロジェクトを宣言
 ②herokuのプロジェクトブランチにpush
している。
なおherokuにpushされると、プロジェクトの言語、設定ファイル等を自動判別し勝手にビルドしてくれる。

最終的なフォルダ構成
(この構成じゃないとbitbucketさんやherokuさんが動いてくれないので要確認)

SampleProject
├─src/main/java
├─src/main/resources
│ ├─application.properties
├─bitbucket-pipelines.yml
├─mvnw
├─mvnw.cmd
├─pom.xml
├─Procfile
├─pom.xml
└─system.properties

#最後にbitbucketにpush
bitbucketにプッシュすると、
①bitbukcetパイプラインが起動
②bitbukcetからheroku側のgitリポジトリにpush
③herokuがmavenプロジェクトと自動判別しmaven buildを実行
④targetフォルダ直下のjarをjavaコマンドで起動
の流れでherokuに配備されます。
pushしたらbitbucketのパイプライン画面のログや、Herokuのlogを確認し、各種コマンドがうまくいっていることを確かめましょう。うまくいったら完了です。

一度パイプラインを作れば、これからはBitBucektにpushするたび自動でherokuに配備されます。
終わりです。

14
3
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
14
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?