Goalist Developers Blog

JenkinsのPublish Over SSHプラグインでEC2上にjarを配布する

Gradleプロジェクトにしてjarをビルドしてるので
ポチッとな〜するだけでデプロイ作業完了できます

ビルド環境

  • Amazon Linux AMI 2017.09.1.20180307 x86_64 HVM GP2
  • Jenkins ver. 2.111

配布先サーバーもAWS EC2です

やってること

  • Gradleでjarをビルド
  • Jenkinsで配布
  • 場所をチョトダケ動かすヨ

手順

1. Jenkinsで配布先サーバーの登録

Publish Over SSH Plugin - Jenkins - Jenkins Wiki

Jenkinsの管理 > システムの設定 > Publish over SSH

Key
配布先への接続用公開鍵をコピペ

Name
判別しやすい名前をつける

Hostname
配布先のホスト

Username
配布先もec2 linuxなのでec2-userでいく

Remote Directory
なにも指定しなければ↑で指定したユーザーのホームディレクトリ

f:id:y-iio:20180509123510p:plain

Test Configurationで失敗する?
配布先サーバのセキュリティグループで、ビルドサーバからのssh接続を許可するのをお忘れなく

2. Jenkinsジョブの設定

2.1. Gradleでjarをビルドする

Gradle Plugin - Jenkins - Jenkins Wiki

Jenkinsジョブ > ビルド > Invoke Gradle script
Use Gradle Wrapper
Tasks にタスク名を指定

かんたん!

f:id:y-iio:20180509122525p:plain

2.2. 配布する

Jenkinsジョブ > ビルド後の処理 > Send build artifacts over SSH

Name
ドロップダウンでさっき登録したサーバが選べるようになっている

Transfer Sets
Source files
ビルド成果物までのパス

Remove prefix
これ指定しないと配布先にも同様のパスがつくられる

Remote directory
配布先のディレクトリを指定
サーバー設定のRemote Directoryでなにも指定してなければ
↑で指定したユーザーのホームディレクトリからの相対パス

Exec command
上書きして配布することができないので、いったん送りつけた後ファイルの場所を移動している

なんかEither Source files, Exec command or both must be suppliedとかエラーメッセージ出ているが無視

f:id:y-iio:20180509123526p:plain

これで終わり〜