CentOSにJenkinsとAWS CodePipelineプラグインをセットアップする
前回までの記事でサンプル用RailsプロジェクトをElastic Beanstalkにデプロイ出来ました。
今回は、新しくCentOS7にサンプル用Railsプロジェクトのテスト環境とJenkinsをセットアップし、AWS CodePipelineと連携するために必要なJenkinsプラグインをインストールするまでまとめたいと思います。
最初のうちはサンプル用Railsプロジェクトを作った時の構築手順とほとんど同じようになります。
※その後、この環境でAWS CodePipelineと連携しても失敗してしまうことが分かりました、別記事を用意しているのでそちらの手順に沿って環境構築することをおすすめします。 → aws-codepipeline-plugin-for-jenkinsの新しいバージョンがリリースされ、正しく動作することを確認しました。
使用したAMI
CentOS 7 x86_64 (2014_09_29) EBS HVM-b7ee8a69-ee97-4a49-9e68-afaee216db2e-ami-d2a117ba.2 (ami-89634988)
基本設定
タイムゾーンなどの基本的な設定をしておきます。それぞれお好みで調整して下さい。
$ sudo timedatectl set-timezone Asia/Tokyo $ sudo sed -i -e "s/^ - update_hostname/# - update_hostname/g" /etc/cloud/cloud.cfg $ sudo sh -c "echo 'jenkins.okochang.com' > /etc/hostname" $ sudo reboot
SELinuxごめんなさい
$ sudo sed -i -e "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config $ sudo reboot
必要なパッケージのインストール
Railの環境がテストするために必要なパッケージと、AWS CLIをインストールします。
$ sudo yum update -y $ sudo yum install -y git emacs gcc make zlib-devel libxml2-devel libxslt-devel readline-devel openssl-devel gcc-c++ curl-devel ruby-devel vim wget epel-release bzip2 bind-utils nodejs git postgresql postgresql-server postgresql-libs postgresql-contrib postgresql-devel $ sudo reboot $ sudo easy_install pip $ sudo pip install awscli
PostgreSQLのセットアップ
サンプル用のRailsプロジェクトではPostgreSQLを使っていますので、初期設定をしておきます。
$ sudo su - postgres $ initdb --encoding=UTF-8 --locale=ja_JP.UTF-8 $ exit $ sudo systemctl start postgresql $ sudo systemctl enable postgresql $ sudo su - postgres $ createuser -a -d -P mimawarigumi $ exit
Jenkinsのセットアップ
ここは今回の手順の主役の部分です。Jenkinsをインストールし、自動起動の設定をします。
$ sudo yum install java-1.8.0-openjdk $ sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo $ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key $ sudo yum install jenkins $ sudo systemctl start jenkins $ sudo systemctl enable jenkins
rbenv、ruby-build、Rubyのセットアップ
サンプル用Railsプロジェクトのテストが出来るようにrbevnやRubyなどをインストールします。
すでにJenkinsのセットアップは終わりましたが、jenkinsユーザーはログイン出来ないようになっております。そのため、/usr/local以下にrbenvをインストールしてjenkinsユーザーが実行できるように権限設定をします。
$ sudo groupadd ruby $ sudo gpasswd -a jenkins ruby
rbenvをインストールし、rubyグループが実行可能なように権限設定をします。
$ cd /usr/local $ sudo git clone git://github.com/sstephenson/rbenv.git rbenv $ sudo chgrp -R ruby rbenv $ sudo chmod -R g+rwxXs rbenv
ruby-buildをインストールし、先ほどと同じくrubyグループに権限を割り当てます。
$ sudo mkdir /usr/local/rbenv/plugins $ cd /usr/local/rbenv/plugins $ sudo git clone git://github.com/sstephenson/ruby-build.git $ sudo chgrp -R ruby ruby-build $ sudo chmod -R g+rwxs ruby-build
rootユーザーの環境変数を設定し、Rubyのインストールが出来るかテストします。
$ sudo -i # echo 'export RBENV_ROOT=/usr/local/rbenv' >> .bash_profile # echo 'export PATH="$RBENV_ROOT/bin:$PATH"' >> .bash_profile # echo 'eval "$(rbenv init -)"' >> .bash_profile # exec $SHELL -l # rbenv install 2.2.2 # rbenv rehash # rbenv global 2.2.2 # ruby -v
Jenkinsのプラグインのインストール
ここまでのセットアップが終わったら、http://サーバーのIPアドレス:8080/にアクセスします。
Jenkinsのダッシュボードの左メニューにある「Jenkinsの管理」から「プラグインの管理」を選択します。「利用可能」タブでテストに必要な以下のプラグインをインストールします。
- Hudson Ruby Plugin
- Rake plugin
- rbenv plugin
AWS CodePipelineプラグインのインストール
いよいよCodePipelineのプラグインをインストールしていきます。
まず最初にこちらのGitHubリポジトリからZIPファイルをダウンロードし、解凍します。
次に「プラグインの管理」で「高度な設定」タブを開きます。「プラグインのアップロード」から先ほど解凍したaws-codepipeline-plugin-for-jenkins/dist以下にあるhpiファイルをアップロードしてインストールして下さい。
これでプラグインのインストールは完了です。次回は実際にJenkinsのジョブを作って、CodePipelineと連携するところまでいきたいと思います。
参考
- Amazon Linux上のJenkinsでrbenv + Bundler + Rspecを動かす - Qiita
- Simple Pipeline Walkthrough - AWS CodePipeline
- Getting Started by Creating a Four-Stage Pipeline - AWS CodePipeline
- Amazon Linux上のJenkinsでrbenv + Bundler + Rspecを動かす - Qiita
- Rails - Jenkinsでrvmを使おうとするとエラー - Qiita
- 【jenkins】 RVMが正常に動作しない bundle: command not found | approad
- awslabs/aws-codepipeline-plugin-for-jenkins · GitHub