nginxとJenkinsで CI サーバーを作る

ませう でございます。

必要に迫られて、自宅にCIサーバーを追加しました。
備忘録も兼ねて、最低限の手順を載せておきます。

前提

  • OS: CentOS 7
  • 構成: nginx(80番ポート) --> Jenkins(8080番ポート)
  • SELinux: 無効(※ /etc/selinux/config ファイルで SELINUX=disabled)

インストール手順

1. nginx(エンジンエックス)

Webサーバーとして nginx をインストールします。
Jenkinsは、nginxのリバースプロキシ機能を通して、外部からアクセス可能とします。

(1) リポジトリを追加
# vi /etc/yum.repos.d/nginx.repo

【以下の内容で保存します】
[nginx]
name=nginx repo #baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=0 enabled=0
 (2) nginx を yum でインストール
# yum --enablerepo=nginx -y install nginx
(3) ファイアウォールに対して http 接続を許可する 
# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --reload
(4) nginx を起動する
# systemctl start nginx
→ http://(IPアドレス)/ にてアクセスし、以下のページが表示されればOK
(5) nginx の自動起動をON
# systemctl enable nginx

2. Jenkins

(1) Java をインストール
# yum install -y java
# java -version
(2) Jenkins の リポジトリ追加
# cd /etc/yum.repos.d
# curl -O http://pkg.jenkins-ci.org/redhat/jenkins.repo
# rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key 
(3) Jenkins を yum でインストール
# yum install --enablerepo=jenkins -y jenkins 

(4) Jenkinsの設定を変更
  Nginxをリバースプロキシとして、~/jenkins/でアクセスできるようにします。
# vi /etc/sysconfig/jenkins
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.util.ProcessTree.disable=true -Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Tokyo"

JENKINS_PORT="8080"

JENKINS_ARGS="--prefix=/jenkins"

(5) Jenkins を起動する
# systemctl start jenkins
(6) Jenkins の自動起動をON
# chkconfig jenkins on ※systemctl ではうまくいかないため…

2. nginx --> Jenkins 連携

(1) nginx にリバースプロキシ設定を追加
# vi /etc/nginx/conf.d/jenkins.conf

【以下の内容で保存します】
upstream jenkins_server {
  server 127.0.0.1:8080 fail_timeout=0;
}

# vi /etc/nginx/conf.d/default.conf

【serversディレクティブに追記】
※この他の設定は適宜追加して下さい
location ~ /jenkins {
    proxy_redirect     off;
    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_set_header   Host              $http_host;
    proxy_set_header   X-Real-IP         $remote_addr;
    proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header   Host $host;

    proxy_pass         http://jenkins_server;
}
(2) nginx を再起動
# systemctl restart nginx
→ http://(IPアドレス)/jenkins/ にてアクセスし、以下のページが表示されればOK
 
無事Jenkinsが起動したら、プロジェクトを追加して CI ライフを満喫しましょう。

それではまた。
Happy Hacking!!