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の設定は他のサイト様で数多く説明があるので省略します。