n-portal

Jenkinsのインストールでハマったこと

CentOS7にJenkinsをインストールしたときにハマったことの覚書。

Jenkinsとはcronの凄い版みたいなもので、Windosのタスクスケジューラーのようにプログラムを定期的に実行してくれます。

インストール

Jenkinsを使った自動テスト環境を作る(前編)

こちらのサイトを参考にインストールを開始しました。

コマンドは管理者権限で実行しています。

↓Jenkinsのパッケージリポジトリを追加する
# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
↓Jenkinsが提供するパッケージの検証を行うための鍵を追加する
# rpm –import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
↓Jenkinsをインストールする
# yum install jenkins
↓Jenkinsを起動する
# systemctl start jenkins

systemctl start jenkins 実行後、何も表示されなかったので、続けて自動起動設定
# chkconfig jenkins on

 ※いつものようにsystemctl enableしたら設定できませんでした。
# systemctl enable jenkins
jenkins.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig jenkins on

インストール後、 http://ホスト名かIP:8080 にブラウザからアクセスすれば繋がるはずでしたが、
接続が出来ませんでした。

接続ができないのでいろいろ試す

まず初めにファイアウォールの設定を疑いました。

↓8080ポートを開ける
# firewall-cmd –zone=public –permanent –add-port=8080/tcp
# firewall-cmd –reload
# systemctl restart jenkins

ファイアウォール設定後 http://ホスト名かIP:8080 にアクセスするが繋がらない。

もしかしたらポートが他のプロセスとバッティングしているのかと思い8010に変更。

↓設定ファイルのバックアップを取る
# cp -rp /etc/sysconfig/jenkins /etc/sysconfig/jenkins.bak
/etc/sysconfig/jenkinsを開いて
#JENKINS_PORT=”8080″

JENKINS_PORT=”8010″
に変更
# systemctl restart jenkins

ポート変更後 http://ホスト名かIP:8010 にアクセスするが繋がらない。

ポート変更後に
ss -natup | grep 8080
ss -natup | grep 8010
でポートの使用状況を確認したが、何のプロセスにも使われていませんでした。

つづいてJavaのバージョンを疑い、調べてみたら
# java -version
java version “1.7.0_91″ とかなり古かったので新しくすることにしました。

# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
出力は割愛
↓次のコマンドを入力し、2を押してjava-1.8.0-openjdk.x86_64を選ぶ
# alternatives –config java

There are 2 programs which provide ‘java’.

Selection Command
———————————————–
+ 1 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64/jre/bin/java
* 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre/bin/java)

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

# java -version
openjdk version “1.8.0_171”
OpenJDK Runtime Environment (build 1.8.0_171-b10)
OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)

無事にバージョンアップ成功
Javaのバージョンアップ後に http://ホスト名かIP:8010 にアクセスするが繋がらない。

そもそも起動してないのかと思い起動を確認してみたところ、

↓起動状況確認
# systemctl status jenkins
● jenkins.service – LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins)
Active: active (exited) since 水 2018-06-06 13:32:39 JST; 1h 22min ago
Docs: man:systemd-sysv-generator(8)

6月 06 13:32:39 red systemd[1]: Starting LSB: Jenkins Automation Server…
6月 06 13:32:39 red runuser[10567]: pam_unix(runuser:session): session opened for user jenkins by (uid=0)
6月 06 13:32:39 red jenkins[10564]: Starting Jenkins Jenkins requires Java 8, but you are running 1.7.0_91-mockbuild_2015_11_20_16_53-b…6_64/jre
6月 06 13:32:39 red jenkins[10564]: java.lang.UnsupportedClassVersionError: 51.0
6月 06 13:32:39 red jenkins[10564]: at Main.main(Main.java:128)
6月 06 13:32:39 red runuser[10567]: pam_unix(runuser:session): session closed for user jenkins
6月 06 13:32:39 red jenkins[10564]: [ OK ] 6月 06 13:32:39 red systemd[1]: Started LSB: Jenkins Automation Server.
6月 06 13:39:59 red systemd[1]: Started LSB: Jenkins Automation Server.
6月 06 13:57:48 red systemd[1]: Started LSB: Jenkins Automation Server.
Hint: Some lines were ellipsized, use -l to show in full.

active (exited)
Starting Jenkins Jenkins requires Java 8, but you are running 1.7.0_91-mockbuild_2015_11_20_16_53-b…6_64/jre
と、なにやら様子がおかしい。

さんざん調べた挙句、次のコマンドを実行することで無事にJenkinsを起動することができました。

# systemctl daemon-reload
# systemctl restart jenkins

ちなみに、正常に起動した時のステータスは次のようになっていました。
# systemctl status jenkins
● jenkins.service – LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins)
Active: active (running) since 水 2018-06-06 15:03:33 JST; 3s ago
Docs: man:systemd-sysv-generator(8)
Process: 16771 ExecStop=/etc/rc.d/init.d/jenkins stop (code=exited, status=0/SUCCESS)
Process: 16794 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/jenkins.service
└─16864 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/li…

6月 06 15:03:32 red systemd[1]: Starting LSB: Jenkins Automation Server…
6月 06 15:03:32 red runuser[16797]: pam_unix(runuser:session): session opened for user jenkins by (uid=0)
6月 06 15:03:33 red runuser[16797]: pam_unix(runuser:session): session closed for user jenkins
6月 06 15:03:33 red jenkins[16794]: Starting Jenkins [ OK ] 6月 06 15:03:33 red systemd[1]: Started LSB: Jenkins Automation Server.

この後のJenkinsの設定は他のサイト様で数多く説明があるので省略します。