Jenkins で Ruby on Rails をデプロイ
今回目指す形
Github のmasterブランチにプッシュされた場合にRailsのデプロイと再起動を行う.
Jenkins をインストール
インストールは yum でおk
yum -y install java-1.7.0-openjdk yum install -y java-1.8.0-openjdk-devel wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key yum install -y jenkins
Jenkins と Githubの連携
GitHub plugin のインストール
Jenkinsの管理からプラグインの管理にてインストール(ついでに必要となる ruby, rake, rbenv もインストールしておく)
GitHub側の設定
SSH keyの登録
サーバでSSH keyを作成する.(以下はjenkinsユーザにて行う)
ssh-keygen
ssh configを設定しておく
Host github github.com HostName github.com IdentityFile ~/.ssh/id_git_rsa #ここに自分の鍵のファイル名 User git
公開鍵を GitHub の設定より設定しておきます.
GtiHubをHookするJenkinsのジョブ設定
「Settings」=> 「Server Hooks」=>「 Jenkins (Github plugin)」で「Jenkins Url」に[JenkinsのURL]/github-webhookを設定する.
Jenkinsの起動とジョブの作成
service jenkins start
localhost:8080 で起動するので Nginxで80portに設定する.
接続するとパスワードを求められるので以下のファイルからコピーする.
cat /var/lib/jenkins/secrets/initialAdminPassword
接続できたらジョブを作成から フリースタイル・プロジェクトのビルド を選択する.
ソースコード管理はGitを選択しプロジェクトURLを設定する.(master以外のブランチも選択可能)
ビルド・トリガには GitHub hook trigger for GITScm polling を選択しておく.
ビルド環境では,rbenv build wrapperを選択し Preinstall gem list にて bundler,rake を行う.
ビルドは,シェルを選択し以下のように設定する.
cd /var/www/dev-sample/ git pull bundle install rails db:migrate ps aux | grep unicorn | grep -v grep | awk '{ print "kill -9", $2 }' | sh bundle exec unicorn_rails -c config/unicorn.rb -E production -D
これでmasterブランチにプッシュされれば自動でデプロイが行われる.