ぺーぺーSEのブログ

備忘録・メモ用サイト。

Jenkins入門

今更Jenkins入門。
公式:https://jenkins-ci.org/
ここでは、バージョン1.607で行う。

インストール・起動

■簡単な方法

jenkins.warを入手して「java -jar jenkins.war」するだけ。

> java -jar jenkins.war
Running from: C:\jenkins\jenkins.war
webroot: $user.home/.jenkins
 (〜省略〜)
3 31, 2015 2:42:41 午後 hudson.model.AsyncPeriodicWork$1 run
情報: Finished Download metadata. 12,141 ms

ログの通り「$user.home/.jenkins」にいろいろ設定類が作成される。(JENKINS_HOME
Linux起動時に自動起動などの設定を行いたい場合は、サービス登録されたTomcatへデプロイするか、Windowsの場合はインストーラを使用してインストールする。
また、JENKINS_HOMEを変更した場合は「set JENKINS_HOME=xxx」(Windows)、「export JENKINS_HOME=xxx」(Linux)してから「java -jar jenkins.war」する。
起動の参考:
https://wiki.jenkins-ci.org/display/JENKINS/Starting+and+Accessing+Jenkins

■yum利用
> wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
> rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
> rpm -qa gpg-pubkey*
> yum install jenkins
> service jenkins start
> service jenkins status


■rpm利用

http://pkg.jenkins-ci.org/redhat/」からrpmを入手して下記のコマンドを実行。

> yum localinstall jenkins-1.607-1.1.noarch.rpm --nogpgcheck
> service jenkins start
> service jenkins status


インストール後の設定

インストール・起動後にブラウザで「http://FQDN:PORT/」(通常は「http://localhost:8080」)へアクセスして下記の設定をする。

■管理者ユーザの作成

「Jenkinsの管理」をクリックすると警告っぽく「セキュリティを設定」と出ているのでクリック。
※表示されていない場合は「Jenkinsの管理」⇒「グローバルセキュリティの設定」に進む。
セキュリティの有効化」をチェックし、「Jenkinsのユーザーデータベース」を選択、「ユーザーにサインアップを許可」チェックをはずし、「保存」をクリックする。
管理者の「ユーザー名」「パスワード」「フルネーム」「メールアドレス」を入力して「サインアップ」をクリックする。

■一般ユーザの作成

「Jenkinsの管理」⇒「ユーザの管理」で設定できる。

■権限の設定

「Jenkinsの管理」⇒「グローバルセキュリティの設定」に進み、「権限管理」で「行列による権限設定」を選択すると、ユーザ単位で詳細に権限を設定できる。

■ツールの設定

「Jenkinsの管理」⇒「システムの設定」に進むと、各種設定やJDK、Ant、Maven、Subversion等のツール類の設定ができる。
またツールは「JENKINS_HOME/tools」に置くといい。

■バックアップ

「Jenkinsの管理」⇒「システムの設定」の「ホームディレクトリ」でJENKINS_HOMEを確認する。
基本的にJENKINS_HOME配下をジョブスケジューラやらcronやらでコピーしておけばいい。
バックアップスクリプトの参考は以下。
https://github.com/sue445/jenkins-backup-script
また、バックアップのプラグインに以下のようなものがある。(オレオレバックアップ?w)

  • Backup Plugin
  • thinBackup


プラグインのインストール

■インターネット接続環境

「Jenkinsの管理」⇒「プラグインの管理」⇒「利用可能」を選択すると一覧が表示されるのでインストールしたプラグインのチェックボックスを選択して「再起動せずにインストール」か「ダウンロードして再起動後にインストール」をクリックする。(再起動しないと反映されないので注意)
※一覧が表示されない場合は、「Jenkinsの管理」⇒「プラグインの管理」⇒「高度な設定」を選択して「更新」をクリックすると表示されるようになる。


この方法でインストールできない場合は、後述の「インターネット未接続環境」の方法でインストールする。

■インターネット未接続環境

「*.hpi」形式でプラグインをダウンロード・入手する。何故か「*.zip」だった場合は、「*.hpi」にファイル名変更で変える。
「Jenkinsの管理」⇒「プラグインの管理」⇒「高度な設定」を選択し、「プラグインのアップロード」からダウンロードした.hpiファイルを選択してアップロードをクリックする。

■オススメプラグイン
  • FindBugs Plugin
    • コンパイル後のバイトコードを解析してバグや不具合が発生しそうなコードをチェックしてくれる
  • Checkstyle Plugin
    • コーディング規約違反をチェックをしてくれる
  • PMD Plugin
    • バグや不具合が発生しそうなコードをチェックしてくれる
  • DRY Plugin
    • コピペコードのような重複したコードをチェックしてくれる
  • Task Scanner Plugin
    • ソースコードを任意の文字列で検索するチェックをかけることができる
      • FIXME、TODO、XXX、deprecated、System.out.printlnとかスキャンしてくれる
  • Warnings Plugin
    • コンパイラの警告をチェックしてくれる
  • Analysis Collector Plugin
    • Checkstyle、Dry、FindBugs、PMD、Task Scanner、Warningsプラグインの結果をまとめてくれる
  • Step Counter Plugin
    • ファイル行数をカウントしてくれる
  • Cobertura Plugin
    • テストカバレッジを計測してくれる
    • JaCoCo Plugin」のほうがいい?
  • Copy Artifact Plugin
    • ビルドの成果物をコピーしてくれる
    • リリース用のジョブに成果物を渡す際等に使う
  • Build Pipeline Plugin
    • トリガで関連するジョブをジョブネットのようなViewで表示してくれる
  • Timestamper
    • 「コンソール出力」に見やすいタイムスタンプをつけてくれる
  • Emotional Jenkins Plugin
    • Jenkinsおじさんが怒ったり悲しんだりする
  • Disk Usage Plugin
    • ディスク使用量を表示してくれる
  • Fingerprint Plugin
    • ビルドで生成した成果物にハッシュ値をつけて、ジョブ間で受け渡す(相互関係のある)成果物を追跡できるようにする
  • Nested View Plugin
    • Categorized Jobs Viewよりもさらに細かく階層化したViewを提供してくれる
  • Publish Over SSH Plugin
    • SSHしてコマンドを発行できる
  • Parameterized Trigger Plugin
    • ジョブの状態をパラメタとして下流のジョブに渡すことでジョブを連動させることができる
      • Build Pipeline Pluginを導入すると勝手に入る

参考:https://wiki.jenkins-ci.org/display/JENKINS/Plugins

Jenkinsが設定する環境変数

ジョブを実行する際、シェルスクリプト類を使用することがある。
その際にJenkinsは環境変数を設定してくれているので利用できる。
※Jenkinsを起動している場合はhttp://FQDN:PORT/env-vars.html/」で確認できる。

環境変数 説明
BUILD_NUMBER 当該ビルドの番号。例 "153"
BUILD_ID 当該ビルドID。例 "2005-08-22_23-59-59" (YYYY-MM-DD_hh-mm-ss)
BUILD_DISPLAY_NAME 当該ビルドの表示名。例 "#153"
JOB_NAME ビルドのプロジェクト名。例 "foo"
BUILD_TAG 文字列 "jenkins-${JOB_NAME}-${BUILD_NUMBER}"。簡易な識別子として、リソースファイルやjarファイルなどに付与するのに便利です。
EXECUTOR_NUMBER このビルドを実行している現在のエグゼキューターを識別する(同一マシンの中で)ユニークな番号。"ビルド実行状態"に表示されている数字ですが、1ではなく0から始まる数字です。
NODE_NAME ビルドが実行されるスレーブの名称。マスターで実行される場合は"master"。
NODE_LABELS ノードに設定されたラベルのリスト(スペース区切り)。
WORKSPACE ワークスペースの絶対パス。
JENKINS_HOME Jenkinsのマスターノードのホームディレクトリの絶対パス。
JENKINS_URL JenkinsのURL。例 http://server:port/jenkins/
BUILD_URL このビルドのURL。 例 http://server:port/jenkins/job/foo/15/
JOB_URL このジョブのURL。 例 http://server:port/jenkins/job/foo/
SVN_REVISION Subversionを使用したプロジェクトにおけるそのモジュールのリビジョン番号。
SVN_URL ワークスペースへチェックアウトしたSubversionのURL。

その他の環境変数は、「Jenkinsの管理」⇒「システム情報」で確認できる。







参考

日本語イントロ記事
http://gihyo.jp/dev/feature/01/hudson

Jenkins 日本語ドキュメント
https://wiki.jenkins-ci.org/display/JA/Jenkins

Javaユーザに贈るJenkins 25のTips
http://www.slideshare.net/linoSth/javajenkins-25tips

Jenkinsを使って継続的に静的コード解析をさせる
http://d.hatena.ne.jp/suzukij/20120611/1339368249