JenkinsにOctopressのデプロイを任せる

BitbucketにOctopressのsourceブランチを置き, pushしたらJenkinsがGithub pageにデプロイするようにする.

目次

  1. 環境
  2. 公開鍵認証用の鍵の生成と登録
  3. プラグインのインストール
  4. ジョブを作成
  5. 確認

なお,

を参照.

環境

  • CentOS release 6.4 (Final)

公開鍵認証用の鍵の生成と登録

cd /var/lib/jenkins
sudo -u jenkins -H ssh-keygen -t rsa

パスフレーズは設定しない. 出来た公開鍵(/var/lib/jenkins/.ssh/id_rsa.pub)の中身をBitbucketとGithubに登録しておく.

また, BitbucketとGithubに接続してknown hostsに加えておく.

sudo -u jenkins git ls-remote -h [email protected]:user/repo.git HEAD
sudo -u jenkins git ls-remote -h [email protected]:user/repo.git HEAD

プラグインのインストール

Manage Jenkins > Manage Plugins > Availableと進み, Git pluginとrbenv pluginにチェックを入れてInstall without restartをクリック.

ジョブを作成

  1. トップページでNew Jobをクリック
  2. Job nameを記入し, Build a free-style software projectを選択してOKをクリック

これで新しいジョブが作成される. 詳細設定は以下のようにする.

  1. Source Code Management: Git
  2. Repository URL: [email protected]:user/repo.git
  3. Branches to build: source
  4. Build Triggers: Poll SCM (Scheduleは空白)
  5. Build Environment: Rbenv build wrapperにチェック
  • Version: 1.9.3-p194
  • Preinstall gem list: bundler,rake
  1. Build > Add build step > Execute shell
  • Command: 下に記載
export PATH="/var/lib/jenkins/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
rbenv exec bundle install --path vendor/bundle
rbenv exec bundle exec rake setup_github_pages\[[email protected]:nomnel/nomnel.github.io.git\]
rbenv exec bundle exec rake gen_deploy

2回目以降はsetup_github_pagesの行は必要ないので消してもよい.

トリガの登録

参考: Kohsuke Kawaguchi » Polling must die: triggering Jenkins builds from a git hook

BitbucketのリポジトリのServicesでPOSTを追加. URLはhttp://your.domain/jenkins/git/[email protected]:user/repo.gitのようにする.

ブラウザ等で実際にURLにアクセスしてみてJobが実行されればOK.

これでBitbucketにpushするとJenkinsに通知が行って, Github pageにデプロイしてくれるようになった.