としたにあんの左脳

備忘録です.

GithubとJenkinsの連携をしてみる

参考エントリー:GitHubとJenkins連動 自動デプロイ 開発環境設定編 at ITエンジニアmegadreamsの開発日記

Jenkinsのインストールは終わっています.なので,JenkinsとGithubの連携からはじめます.
さくらVPSにJenkinをインストール - としたにあんの左脳

ここで,
Jenkinsのアップデートしなきゃいけないことに気づき,Jenkinsのアップデートをしました
Jenkinsをアップデート - としたにあんの左脳
ついでにgitインストールしてなかったです.インストールしておきます.

$ sudo apt-get install git

では

JenkinsとGitHubの連携

から始めます.

Gitプラグインのインストールはうまくいきました.
Jenkins用の鍵の生成の際,

  cd /var/lib/jenkins
  cd .ssh (なければmkdir .ssh)
  sudo -u jenkins -H ssh-keygen -t rsa -C jenkins@hoge.com
  chmod 744 ../.ssh

となっていますが,.sshを作る際はJenkinsユーザで作るか,作った後に

$ chown jenkins .ssh

で所有者を変更してあげないとうまくいきませんでした.
あと,Jenkinsのgitconfigを設定するときに -H オプションをつけて

$ sudo -u jenkins -H git config --global user.email "jenkins@jenkins-server"
$ sudo -u jenkins -H git config --global user.name "jenkins"

としてあげないと,実行ユーザのホームディレクトリを見に行っちゃうみたいです.

sudo -u jenkins -H git config --global --list

してあげるとちゃんと設定できているかわかりました.

コミットされたらJenkinに教えてあげる.

ここでハマりました.

Jenkinsにはアクセス制限をつけていて,ログインをしないと入れないようにしています.
なので,参考エントリーのようにビルド実行のへのリンクをWebHook URLに指定してもうまくいきませんでした.

ここで,このエントリーJenkinsとbitbucket private repository の連携にはnotifyCommitが便利 - Lokiへの日々

Jenkinsの設定は ジョブの設定>ビルド・トリガ > SCMをポーリング にチェックをを入れる
f:id:toshitanian:20130908221908p:plain

Github側のWebHook URLには

http://<自分のサーバー>/jenkins/git/notifyCommit?url=<git@github.com:foo/hoge>

これでGithubにPushがあった時に,Jenkins側でurl=で指定したリポジトリに関係のあるジョブが実行されるらしいです.

Githubにビルドステータスを表示

参考:GitHub - GHE対応!Jenkinsのビルドステータスをアイコン表示する - Qiita [キータ]
Jenkinsの管理 > プラグインの管理 >利用可能 から embeddable-build-status というプラグインをインストールし,再起動をします.
すると,ジョブの画面に
f:id:toshitanian:20130908224128p:plain
埋め込み用ステータスアイコン というのができています.

ここの中からMarkdown用のリンクをコピーして,README.mdに貼り付けたらうまくいくと思います.(うまくいってない)