本稿では継続的インテグレーション(CI)ツール「Jenkins」を CentOS 7 にインストールする手順について解説します。 本稿では2018年02月現在で最新の 2.89 を yum を利用してインストールします。
前提環境のインストール
Jenkins は Java 製のプロダクトで、動作させるには Java のランタイムが必要ですので、あらかじめ Java をインストールしておく必要があります。 CentOS 7 では公式yumリポジトリで OpenJDK 8 が提供されていますので、ここでは次のコマンドで OpenJDK 8 をインストールします。
# yum -y install java-1.8.0-openjdk
もし他のバージョンの OpenJDK を使いたかったり、Oracle JDK を利用したい場合は、次の記事を参考に導入してください。
Jenkins公式yumリポジトリの追加
CentOS ではパッケージ管理ツールとして yum が利用されますが、Jenkins も公式のyumリポジトリを提供しており、そのyumリポジトリを CentOS 7 に追加して上げることで、yum コマンドで簡単に Jenkins をインストールすることができます。 ここではまず、Jenkins の公式yumリポジトリを追加してあげます。
yum のリポジトリ情報を格納する /etc/yum.repos.d ディレクトリに Jenkins 用の設定を追加してあげます。 追加すべきファイルは Jenkins のサイトで公開されており、そこからダウンロードしてあげればOKです。 公式サイトの解説では wget コマンドを利用していますが、CentOS 7 では標準で wget コマンドがインストールされていないことがあるので、ここでは curl コマンドで同様のことを実現します。
# curl -o /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
また、Jenkinsリポジトリからダウンロードするパッケージの信頼性を検証するための公開鍵も追加します。
# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
これで Jenkins リポジトリの追加は完了です。
Jenkinsのインストール
それでは Jenkins をインストールしていきましょう。 まずは本当に yum で Jenkins がインストールできるようになったのかを確かめる意味もこめて、Jenkins パッケージを検索してみましょう。 yum info コマンドにパッケージ名 jenkins を指定してあげます。
# yum info jenkins
Available Packages
Name : jenkins
Arch : noarch
Version : 2.89.4
Release : 1.1
Size : 71 M
Repo : jenkins
Summary : Jenkins Automation Server
URL : http://jenkins.io/
License : MIT/X License, GPL/CDDL, ASL2
Description : Jenkins is an open source automation server which enables developers around the world to reliably automate their development lifecycle processes of all kinds, including build, document, test, package, stage, deployment,
(以下略)
上の結果では、バージョン 2.89.4 が利用できることがわかりました。 それでは続けてインストールしていきましょう。 yum install コマンドに
jenkins を指定してインストールします。
# yum -y install jenkins
これで Jenkins のインストールは完了です。
Jenkinsのサービス化設定
サーバが起動した際に自動的に Jenkins のサービスが開始されるように設定しましょう。 Systemctl enable にサービス名 jenkins を指定して上げることで、自動起動設定が有効になります。
# systemctl enable jenkins
jenkins.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig jenkins on
Jenkinsの起動と停止
それでは、Jenkins を起動してみましょう。 systemd の systemctl start でサービス名 jenkins を指定すると起動できます。
# systemctl start jenkins
Jenkins を起動したら、さっそくアクセスしてみましょう。 インストールしたホストの8080番ポート、 http://ホスト名:8080/ にアクセスします。すると次のような画面が表示されたでしょうか? (もし表示されない場合はファイアウォールが有効になっている可能性があるので、下記のファイアウォールの設定を試してください)
Jenkins の初回アクセス時には、上の画面のようにパスワードが聞かれます。 表示された画面に記載されている通り、パスワードはファイル /var/lib/jenkins/secrets/initialAdminPassword 内に記述されていますので、cat などで開いて確認してください。
なお、Jenkins を停止したい場合は systemctl stop コマンドでサービス名 jenkins を指定して停止します。
# systemctl stop jenkins
ファイアウォール (Firewalld) が有効な場合の設定
Jenkins では、デフォルトの HTTP の待ち受けポートとして8080番が利用されますが、CentOS 7 ではデフォルトでファイアウォール(Firewalld)が有効なっている場合があります。 ファイアウォールが有効になっている場合は8080番ポートへのアクセスを許可しないとブラウザから閲覧することができませんので、ここではその設定手順についてざっと説明します。
Firewalld に認識させるサービスは /usr/lib/firewalld/services/ にサービス毎に xml ファイルを作成して、xml にサービスで利用するポート番号などを記載して管理しています。 しかしユーザーがカスタマイズした設定(CentOS 7 初期状態とは異なる設定)は /etc/firewalld/services/ 内に配置するように決められています。 ここでは、新たに Jenkins サービスを Firewalld で管理したいので、/etc/firewalld/services/ フォルダに jenkins.xml を作成します。 jenkins.xml を作成したら、そのファイルの中身は次のように記述します。
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Jenkins</short>
<description>Jenkins</description>
<port protocol="tcp" port="8080"/>
</service>
Firewalld が現時点で通信を許可しているサービスは、次のような firewall-cmd コマンドで確認することができます。 次の例だと dhcpv6-client と ssh のサービスが許可されていることが分かります。
# firewall-cmd --list-services --zone=public --permanent
dhcpv6-client ssh
Firewalld に上で作成した Jenkins の通信を許可するように、次のように firewall-cmd を実行します。
# firewall-cmd --add-service=jenkins --zone=public --permanent
# firewall-cmd --reload
もう一度、現在通信を許可しているサービスを確認すると、今度は jenkins が追加されたことが確認できます。 これで8080番ポートが開いたはずですので、Jenkinsにアクセスできることを確認してみてください。
# firewall-cmd --list-services --zone=public --permanent
dhcpv6-client ssh jenkins
これでファイアウォールの設定も完了です。
補足:ポート番号の変更
本稿の手順に沿って Jenkins をインストールした場合、ポート8080番でサービスが起動します。 しかし Apache Tomcat などが別途インストールされているなどでポート番号を変更したい場合は、設定ファイル /etc/sysconfig/jenkins で変更することができます。 ファイル内の変数 JENKINS_PORT を編集します。
JENKINS_PORT="8888"
おわりに
本稿では CentOS 7 に継続的インテグレーションツール「Jenkins」をインストールする手順について解説しました。 もし Apache httpd をフロントとして立たせたい場合は、次のような記事を参考にしてみてください。