LoginSignup
4
6

More than 5 years have passed since last update.

Jenkins + GitHubで、RailsのCIの仕組みを整える①

Last updated at Posted at 2017-03-25

※2016年10月に別のブログで書いたものを移行した記事になります。


Railsの開発環境を整える① - Qiita
Railsの開発環境を整える② - Qiita
に続いて、CI(継続的インテグレーション)を導入して、ベスト・プラクティスの完成です。
CIツールには、Jenkinsを使います。
今回は、AWSで動かしたいと思います。

Jenkinsのインストール

Javaのインストール

JenkinsはJavaで動く。
※既にJavaがインストールされていれば、削除しておく

$ java -version
$ sudo yum remove java

Javaをインストールする。

$ yum list | grep openjdk
$ sudo yum -y install java-1.7.0-openjdk
$ java -version
java version "1.7.0_111"
OpenJDK Runtime Environment (rhel-2.6.7.2.el7_2-x86_64 u111-b01)
OpenJDK 64-Bit Server VM (build 24.111-b01, mixed mode)

Javaのバージョンが違う場合、1.7.0を指定する。

$ java -version
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-b15)
OpenJDK 64-Bit Server VM (build 25.111-b15, mixed mode)

$ sudo alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
 + 1           /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
\*  2           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java

Enter to keep the current selection[+], or type selection number: 2

$ java -version
java version "1.7.0_111"
OpenJDK Runtime Environment (amzn-2.6.7.2.68.amzn1-x86_64 u111-b01)
OpenJDK 64-Bit Server VM (build 24.111-b01, mixed mode)

Jenkinsのインストール・設定

Jenkinsをインストール

$ sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
$ sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
$ sudo yum -y install jenkins

自動起動設定(CentOS7の場合)

$ sudo systemctl start jenkins
$ sudo systemctl enable jenkins
jenkins.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig jenkins on
$ sudo chkconfig jenkins on
$ chkconfig --list jenkins

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

jenkins         0:off   1:off   2:on    3:on    4:on    5:on    6:off

自動起動設定(CentOS6.xの場合)

$ sudo service jenkins start
Starting Jenkins                                           [  OK  ]
$ sudo chkconfig jenkins on
$ chkconfig --list jenkins
jenkins         0:off   1:off   2:on    3:on    4:on    5:on    6:off

ファイアフォール設定(AWSの場合)

AWSの場合、セキュリティグループで、8080portを許可しておく。

ファイアフォール設定(Vagrant✕CentOS7の場合)

Vagrantの場合、以下の設定が必要。
ファイアフォールで、httpと8080portを許可

$ sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
success
$ sudo firewall-cmd --zone=public --add-service=http --permanent
success
$ sudo firewall-cmd --reload
success
$ firewall-cmd --list-all
public (default, active)
  interfaces: enp0s3 enp0s8
  sources:
  services: dhcpv6-client http ssh
  ports: 8080/tcp
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

localhost:8080でアクセスできるように、Vagrantファイルに以下を追加

config.vm.network "forwarded_port", guest: 8080, host: 8080

Jenkinsにアクセス

ブラウザで http://[yourhost]:8080/にアクセス

Jenkins-Jenkins--1024x507.png

初回のみ、以下の画面が表示される。指定されたパスに書いてあるパスワードをコピペする。

$ sudo -u jenkins cat /var/lib/jenkins/.ssh/id_rsa.pub

SetupWizard-Jenkins_installing--1024x479.png

インストールが実行される。

SetupWizard-Jenkins_installing--1024x479.png

ユーザー名などを入力

SetupWizard-Jenkins-info--1024x479.png

Jenkinsのトップページが表示された。

ダッシュボード-Jenkins--1024x479.png

参考サイト

botアカウントの作成

GitHubで、botアカウントを新たに作成しておく。
このbotアカウントが、自動テストの結果をGitHubに通知してくれるように、設定していく。

GitHubへの公開鍵認証を設定する

GitHubのリポジトリへのアクセス認証は、公開鍵認証で行う。

公開鍵と秘密鍵の作成

Jenkinsユーザーで鍵を作成する。

$ sudo -u jenkins ssh-keygen -t rsa -C "you@example.com"

いくつか質問されるが、全てEnterで良い。
"you@example.com"は、GitHubに登録したメールアドレスを設定する。
公開鍵のパスワードも空にする。

botアカウントに公開鍵を登録する

先ほど作成した公開鍵(id_rsa.pub)は、botアカウントに登録する。
botアカウントの Setting > SSH and GPG keys で、「New SSH Key」をクリックする。

SSH-and-GPG-keys-1024x479.png

名前は適当なものを入力し、
id_rsa.pubの中身をコピペして、「Add SSH key」をクリックする。
id_rsa.pubはcatコマンドで確認できる。

$ sudo -u jenkins cat /var/lib/jenkins/.ssh/id_rsa.pub

SSH-and-GPG-keys-1024x479.png

GitHubの認証が通るかテストする

$ sudo -u jenkins ssh -T git@github.com

以下のように表示されれば成功。

Hi mokuo-bot! You've successfully authenticated, but GitHub does not provide shell access.

botアカウントに、リポジトリへのアクセス権限を与える

GitHubのリポジトリのページから、Setting > Collaborators で
botアカウントをCollaboratorsに追加する。

Comparing-master...-3-%B7-mokuo-mokumoku_library-282x132.png

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

Jenkinsの管理 > プラグインの管理 > 利用可能タブ から、

  • Rake plugin
  • rbenv plugin
  • GitHub pull request builder

にチェックをして、「再起動せずにインストール」をクリック。

アップデートセンター-Jenkins-1-1-1024x479.png

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6