Jenkins#1 実行環境の構築
Jenkins実行環境の構築方法を説明する。
目次
Jenkins環境作成
1.概要
「Jenkins」とは
Jenkins (ジェンキンス) とは、Javaで書かれたオープンソースの継続的インテグレーションツールである。
ソフトウェアのビルド、検証、サーバへのインストール等の一連作業を自動化する事が出来る。(wikipediaより引用)
「継続的インテグレーションツール(CIツール)」とは
継続的インテグレーション、CI(英: continuous integration)とは、主にプログラマーのアプリケーション作成時の品質改善や納期の短縮のための習慣のことである。
エクストリーム・プログラミング (XP) のプラクティスの一つで、狭義にはビルドやテスト、インスペクションなどを継続的に実行していくことを意味する。(wikipediaより引用)
活用事例
Jenkinsを導入する前までは、手順が煩雑で、慣れが必要。
(例)
◎ Eclipseを起動する
◎ 最新モジュールをSVNからチェックアウトする
◎ Eclipseにてビルドしてwarファイルを作成する
◎ APサーバ(tomcat)にwarファイルアップロードする
tomcatの再起動する
◎ 関係者に「デプロイ完了メール」を送信する
しかし、Jenkinsを導入した後は、誰でも同じ手順で簡単にデプロイ作業が行えるようになる。
(例)
◎ Jenkinsにログインする
◎ 対象ジョブを実行する
◎ Jenkinsが送信する「デプロイ完了メール」を待つ
また、ビルド、デプロイに何時間も掛かる場合、誰も利用者がいない深夜時間帯にタイマーでJenkinsのジョブが起動するよう設定し朝出勤時にはすぐテストができる状態にするなど、システム開発で何度も行う「デプロイ作業」を自動化することで、時間短縮、作業の安定運用化を図ることができる。
最終的に目指す構成

SVNサーバが構築されている前提とする。
WebAPサーバが別途構築されている前提とする。
これらの構築手順については、割愛する。
Antについては次章にて導入する。
今回実現したいこと
JenkinsをTomcat上にデプロイし、Jenkinsスクリプトにて”HelloWorld”をログ出力するまでを確認する。
2.構築環境について
構築の概要
Linux系OS(CentOS6.8)稼働中のサーバマシンにJenkins稼動環境を構築する。
インストール対象
◎ JDK8
◎ tomcat9
◎ Jenkins
Jenkins自体にサーバ機能が包含されているが、今回はtomcat上で稼動をさせる。
インストールディレクトリ
JDK、Tomcat、Jenkinsは以下の階層にインストールすることとした。
/usr/local/bin
└jdk1.8.0_152
└apache-tomcat-9.0.10
└webapps
└jenkins.war
└jenkins
Jenkinsディレクトリ構成(参考)
Jenkinsを起動すると、起動ユーザのユーザディレクトリ直下に「.jenkins」ディレクトリが作成される。
/root
└.jenkins
└jobs (作成したジョブ定義の格納場所)
└01.HelloWorld
└02.Checkout
└03.build
└04.deploy
└logs
└nodes
└plugins
└secrets
└initialAdminPassword (※後述:初期パスワードファイルの配置場所)
└tools
└updates
└userContent
└users
└workflow-libs
└workspace (ジョブ実行時の作業ディレクトリ)
└02.Checkout
└03.build
└04.deploy
3.インストール
Javaのインストール
JDKダウンロード
以下よりJDKをダウンロードする。
◎ Oracleサイト
解凍
アップロードを行い、解凍する。
cd /usr/local/bin
tar -xvf jdk-8u152-linux-x64.tar.gz
プロファイルを開く
環境変数として登録するために、viエディタでプロファイルを開く。
vi /etc/profile
環境変数登録
末尾にPATH、JAVA_HOMEの追記し保存する。
export JAVA_HOME=/usr/local/bin/jdk1.8.0_152
export PATH=$JAVA_HOME/bin:$PATH
設定反映
設定した内容を反映させる。
source /etc/profile
反映確認
反映されたか確認する。
# java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)
Tomcatインストール
Tomcatダウンロード
以下コマンドにてtomcatをダウンロードする。
cd /usr/local/bin
wget http://ftp.riken.jp/net/apache/tomcat/tomcat-9/v9.0.10/bin/apache-tomcat-9.0.10.tar.gz
解凍
解凍する。
tar -xvf apache-tomcat-9.0.10.tar.gz
設定追加
iptablesに8080ポートを開放する設定を追加する。
vi /etc/sysconfig/iptables
以下の一文を追記する
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
設定反映
iptablesを再起動し設定を反映する。
/etc/rc.d/init.d/iptables restart
iptables: チェインをポリシー ACCEPT へ設定中filter [ OK ]
iptables: ファイアウォールルールを消去中: [ OK ]
iptables: モジュールを取り外し中: [ OK ]
iptables: ファイアウォールルールを適用中: [ OK ]
tomcat起動
tomcatを起動する
/usr/local/bin/apache-tomcat-9.0.10/bin/startup.sh
tomcat画面確認
tomcat画面が表示されることを確認する。

Jenkinsインストール
Jenkinsダウンロード
以下にアクセスし、「Generic Java package (.war)」を押下してwarファイルをダウンロードする。

warの配置
以下ディレクトリにwarファイルを配置する。
/usr/local/bin/apache-tomcat-9.0.10/webapps
# ls
ROOT docs examples host-manager jenkins.war manager
warファイルのデプロイ
少し待つとTomcatのAutoDeploy機能により、warファイルがデプロイされ、同ディレクトリに展開される。
# ls
ROOT docs examples host-manager jenkins jenkins.war manager
Jenkins画面確認
以下URLに接続するとJenkins画面が立ち上がることを確認する

4.Jenkins初期設定
administrator password の入力
初回起動時は administrator password の入力が求められる。
画面赤字のパスを開くとパスワードが記載されているため、転記し、「Continue」を押下する。

# cat /root/.jenkins/secrets/initialAdminPassword
b5ef7bd22e314d2b934f412fa7773fe9
プラグインのインストール方法選択
インストール方法選択
プラグインのインストール方法について選択する。
Install suggested plugins を押下し、推奨プラグインを導入する。

インストール完了
プラグインが順次インストールされるので、少し待つ。

AdminUser登録
管理者ユーザ登録を行う。

JenkinsURL
JenkinsURLの設定を行うことができる。今回はこのままとする。

Jenkins is ready!
設定完了
設定が完了したので「Start using Jenkins」を押下する。

Jenkins準備完了
Jenkinsを使う準備が整った。

5.HelloWorld
Jenkins環境作成
新規ジョブ作成選択
メニューから新規ジョブ作成を選択する。

ジョブ名・種類選択
ジョブの名前を「01.HelloWorld」とし、ジョブの種類は「パイプライン」を選択する。

スクリプト入力
最下部にスクリプトを入力するテキストエリアがあるので、以下のようにコードを記載する。もしくはプルダウンから Hello World を選択する。
コードを書いたら保存を押下する。

ビルド実行
ビルドの実行を押下する。

ビルド履歴確認
ビルド履歴の欄に結果が表示される。青いアイコンはビルド成功、赤いアイコンはビルド失敗を示す。
ビルドが成功したので、ログを確認するため、日時部分のリンクを押下する。

コンソール出力
コンソール出力を押下する。

コンソール出力結果確認
“Hello World”と表示されていることが確認できる。

スクリプト内容の修正
先ほどのスクリプトを以下のように書き換えてみる。
stage関数を追加すると、stageから次のstageまでの処理に掛かった時間や、どの区間で失敗したかなどがわかるようになる。
node {
stage 'stage1'
echo 'Hello World!'
stage 'stage2'
echo 'Hello World!!'
}
