読者です 読者をやめる 読者になる 読者になる

量産型エンジニアの憂鬱

きっと僕は何物にもなれない。

JenkinsとGitHubを連携する

これまでIDEでビルドしたプロジェクトを手動でサーバにデプロイしていた。この方法はいろいろと問題点があった。

  • 開発者のIDEの個人設定でビルドしてしまう
  • 手順が煩雑
    1. IDEでビルドする
    2. 成果物をantまたはscpでサーバに持っていく
    3. sshでサーバに入って作業
  • 開発者が各々デプロイするのでデプロイされているバージョンがわからない

ついでに開発フローの見直しも予定しており、GitHub Flowを想定している。そのうちの

  • マージをしてmasterへpushしたら、直ちにデプロイをする

ていうのも面倒くさくなりそう。

そこで、Jenkinsさんにお願いすることにする。今回はGitHubとの連携手順を調べておく(実際に運用するのはGitLab)。
Jenkinsのインストールは前回の記事で書いた。

JenkinsとGitHubの連携手順

GitHubと連携する場合、あらかじめssh鍵を登録しておく必要がある。

SSH鍵の作成

今回はDockerで起動しているので、連動させたホストのディレクトリ/opt/jenkins以下の.sshディレクトリに鍵を生成する。

sudo -u \#1000 ssh-keygen -t rsa -f /opt/jenkins/.ssh/id_rsa

SSH鍵の設定

鍵を生成したらGitHubにログインして個人メニューのSettingsを指定。
f:id:duck8823:20160424003112j:plain

表示される設定メニューから、SSH and GPG keysを指定して、New SSH keyをクリックする。
以下の画面が表示されるので、 Titleを入力し、Keyには先ほど生成した公開鍵id_rsa.pubの内容を記入する。
f:id:duck8823:20160424004320p:plain

Jenkinsの設定

Jenkinsにログインしたら、
f:id:duck8823:20160423235707p:plain
を押す。

以下の画面が表示されるので、名前を入力し、フリースタイル・プロジェクトのビルドを指定してOKを押す。
f:id:duck8823:20160423235838p:plain

ソースコードの管理でGitを指定、Repository URLGitHubのURL(SSH形式)を記入する。
f:id:duck8823:20160424010353p:plain

ビルド・トリガでBuild when a change is pushed to GitHubにチェック
f:id:duck8823:20160424010642p:plain

あとはビルド手順を追加して、保存

GitHubの設定

連携させるリポジトリSettingメニューのWebhooks & servicesからAdd serviceをクリック。 f:id:duck8823:20160424013359p:plain
連携可能なサービスはいっぱいあるので、JenkinsでフィルターかけてJenkins (GitHub plugin)を選択。

Jenkins urlには<JekninsのホストのURL>/github-webhookを指定。
f:id:duck8823:20160424013646p:plain
Add serviceを押すと、サービス一覧に追加される。
f:id:duck8823:20160424021751p:plain
追加されたサービスをクリックし、右上の Test serviceをクリック。
Jenkinsの画面でビルドが走り出し、GitHub Hook Log
f:id:duck8823:20160424022248p:plain
と表示されたら成功。
手動でビルドなどしていたらビルドが走らないかもしれませんが、既にビルドしてるよってログが出てるかもしれないのでGitHub Hook Logでチェックしましょう。