Jenkins が起動しない - Unable to read /var/lib/jenkins/config.xml -

Jenkins が起動しない - Unable to read /var/lib/jenkins/config.xml -

とある午後、Jenkins を再起動したときに出たエラー

1
2
3
4
5
6
7
8
9
10
hudson.util.HudsonFailedToLoad: org.jvnet.hudson.reactor.ReactorException: java.io.IOException: Unable to read /var/lib/jenkins/config.xml
at hudson.WebAppMain$3.run(WebAppMain.java:234)
Caused by: org.jvnet.hudson.reactor.ReactorException: java.io.IOException: Unable to read /var/lib/jenkins/config.xml
at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:269)
at jenkins.InitReactorRunner.run(InitReactorRunner.java:44)
at jenkins.model.Jenkins.executeReactor(Jenkins.java:912)
at jenkins.model.Jenkins.<init>(Jenkins.java:811)
at hudson.model.Hudson.<init>(Hudson.java:82)
at hudson.model.Hudson.<init>(Hudson.java:78)
at hudson.WebAppMain$3.run(WebAppMain.java:222)

/var/lib/jenkins/config.xml が読み込めない というエラー

/var/lib/jenkins/config.xml の所有者は jenkins:jenkins だけど、なぜ?

と権限周りを諸々試験して直していくと
plugins をディレクトリごと所有者変更すると直りました汗

1
$ sudo chown -R jenkins:jenkins /var/lib/jenkins/plugins

plugin の挙動で何か所有者変更され得るものがあったのか解明せず。

同様の事象の記事を見つけたので参照

Jenkins - Short cycles in the day-of-month field will behave oddly near the end of a month

Jenkins - Short cycles in the day-of-month field will behave oddly near the end of a month

完全なる備忘録です。

Jenkins で 毎月第 1 月曜日のみ設定しようとしたら

1
Short cycles in the day-of-month field will behave oddly near the end of a month

次の様に分けるとエラーが消えます。

概要

アメリカでは
月間の期間を 4,5 週間の単位で
売り上げの結果を考える慣習があります。

その際に月初にレポートが欲しい
なんてときに今回このような処理をする必要がありました。

以上です。

Jenkins + SonarQube で PHPコードメトリクス計測!

Jenkins + SonarQube で PHPコードメトリクス計測!

前回

Jenkins とは別のサーバ上に
SonarQube をインストールし
アクセスできるまでをまとめました。

今回は Jenkins からソースを解析し
SonarQube でのメトリクス情報を表示までの実行方法をまとめます。

言語は どれでも良いですが、 今回は PHP とします。

Overview

以下概要になります。

SonarQube 側事前準備

プロジェクトを作成しプロジェクトキーを発行します。

1. ログインページへアクセス

http://:9000/sessions/new

デフォルトでは以下 admin:admin アカウントでログイン

Item Value
ID admin
PW admin

2. プロジェクト作成

  • ヘッダーメニュー Administration クリックし Administration ページへ遷移
  • Projects > Management クリック
  • Create ボタンクリック
  • Name, Key 入力し
  • プロジェクトが追加されたことがわかります。

3. PHP Plugin インストール

  • Administration ページ System > Update Center クリック
  • Available 選択 → 検索窓で「PHP」と入力 → 表示された PHP Plugin で Install クリック
  • Restart で SonarQube に PHP Plugin インストール
  • Installed タブで PHP Plugin がインストールされていることを確認

4. authentication token 発行

  • Security > User クリック
  • TOKENS クリックしポップアップ表示
  • 任意の文字列を入力し create
  • token コピー
    Jenkins 側の設定時に利用します。

以上で SonarQube 側の事前準備は終了です。

Jenkins 側準備

1. SonarQube Plugin インストール

Jenkins の管理 > Plugin の管理
にて SonarQube Plugin インストール

2. SonarQube Scanner インストール

以下オフィシャルダウンロードページからリンク取得

Analyzing+with+SonarQube+Scanner

1
2
3
4
$ cd /var/lib/jenkins
$ wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-2.6.1.zip
$ unzip sonar-scanner-2.6.1.zip
$ ln -s sonar-scanner-2.6.1 sonar-scanner

3. Jenkins システム設定

  • Jenkins の管理 > システムの設定 へアクセス

  • JenkinsQube servers に必要項目入力

  • SonarQube Scanner に先ほどインストールした sonar-scanner パスを設定

上記入力後保存

4. ジョブ新規作成

「sonarqubeTest」という名前のジョブを新規作成します。

  • git リポジトリより PHP プロジェクト取得設定
  • SonarScanner 実行設定

以上で Jenkins 側の設定完了です。

SonarQube 反映確認

ちなみにこちら EC-CUBE 1.1 のプロジェクトでした。

EC-CUBE のコード重複率が多く
無駄が如何に多いかがわかります。

以上です。