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

okochangの馬鹿でありがとう

ふらふら適当に世間を生きる日々でございます

CentOSにJenkinsとAWS CodePipelineプラグインをセットアップする

AWS awscli CentOS Jenkins Rails CodePipeline

前回までの記事でサンプル用RailsプロジェクトをElastic Beanstalkにデプロイ出来ました。
今回は、新しくCentOS7にサンプル用Railsプロジェクトのテスト環境とJenkinsをセットアップし、AWS CodePipelineと連携するために必要なJenkinsプラグインをインストールするまでまとめたいと思います。
最初のうちはサンプル用Railsプロジェクトを作った時の構築手順とほとんど同じようになります。
※その後、この環境でAWS CodePipelineと連携しても失敗してしまうことが分かりました、別記事を用意しているのでそちらの手順に沿って環境構築することをおすすめします。aws-codepipeline-plugin-for-jenkinsの新しいバージョンがリリースされ、正しく動作することを確認しました。

f:id:okochang:20150714153507j:plain

使用したAMI

CentOS 7 x86_64 (2014_09_29) EBS HVM-b7ee8a69-ee97-4a49-9e68-afaee216db2e-ami-d2a117ba.2 (ami-89634988)

aws.amazon.com

基本設定

タイムゾーンなどの基本的な設定をしておきます。それぞれお好みで調整して下さい。

$ 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の管理」から「プラグインの管理」を選択します。「利用可能」タブでテストに必要な以下のプラグインをインストールします。

f:id:okochang:20150717014010p:plain

  • Hudson Ruby Plugin

f:id:okochang:20150717014700p:plain

  • Rake plugin

f:id:okochang:20150717014202p:plain

  • rbenv plugin

f:id:okochang:20150717014221p:plain

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

いよいよCodePipelineのプラグインをインストールしていきます。
まず最初にこちらGitHubリポジトリからZIPファイルをダウンロードし、解凍します。
次に「プラグインの管理」で「高度な設定」タブを開きます。「プラグインのアップロード」から先ほど解凍したaws-codepipeline-plugin-for-jenkins/dist以下にあるhpiファイルをアップロードしてインストールして下さい。

f:id:okochang:20150717014858p:plain

これでプラグインのインストールは完了です。次回は実際にJenkinsのジョブを作って、CodePipelineと連携するところまでいきたいと思います。