---
keywords: [Jenkins, Java]
description: Jenkinsの設定、トラブルに関するメモなど
author: aterai
pubdate: 2017-06-02
---
#contents

* 概要 [#summary]
`Jenkins`の設定、トラブルに関するメモなどを記述しています。

* トラブル [#wf632491]
** GIT_ASKPASS credentials [#zb68dbf4]
- `Jenkins`が`git`コマンドを使用するとき、資格情報が入力されるのを待ち続けてタイムアウトしてしまう場合がある
#code{{
 > C:\Program Files\Git\bin\git.exe --version # timeout=10
using GIT_ASKPASS to set credentials ユーザ名
 > C:\Program Files\Git\bin\git.exe fetch --tags --progress http://example.com/git/test +refs/heads/*:refs/remotes/origin/*
ERROR: Timeout after 10 minutes
ERROR: Error fetching remote repo 'origin'
}}

- `git config --system --unset credential.helper`を実行して`C:\Program Files\Git\mingw64\etc\gitconfig`から資格情報ヘルパーを削除する
-- 参考: [https://stackoverflow.com/questions/42627269/jenkins-using-git-askpass-to-set-credentials/42636309 Jenkins - using GIT_ASKPASS to set credentials - Stack Overflow]
- `Git for Windows`の再インストールで`C:\Program Files\Git\mingw64\etc\gitconfig`が上書きされる?ようなので、`Enable Git Credential Manager`のチェックを外すほうが確実かもしれない
-- [https://support.cloudbees.com/hc/en-us/articles/221046888-Build-Hang-or-Fail-with-Git-for-Windows Build Hang or Fail with Git for Windows – CloudBees Support]

#img2(https://drive.google.com/uc?export=view&id=1X7AIqvx-6Lich4bS87hCBpe2JA5CUBzZKg)
#img2(https://drive.google.com/uc?id=1X7AIqvx-6Lich4bS87hCBpe2JA5CUBzZKg)

** diskcheckプラグインでArrayIndexOutOfBoundsException [#i4932bd9]
- `diskcheck`を`0.29`にすると`ArrayIndexOutOfBoundsException`が発生してビルドに失敗する場合がある?
-- [https://wiki.jenkins-ci.org/display/JENKINS/DiskCheck+Plugin DiskCheck Plugin - Jenkins - Jenkins Wiki]
-- `0.29`に更新前は`Total Disk Space Available is: 26Gb`ほど空き容量はある状態
-- `Windows 7 64bit` + `Jenkins 2.66`で発生
-- `CentOS release 6.8 (Final)` + `Jenkins 2.66`は問題なし

#code{{
SCMのポーリングが実行
ビルドします。 ワークスペース: ********************
Disk space threshold is set to :0Gb
Checking disk space Now 
FATAL: 62
java.lang.ArrayIndexOutOfBoundsException: 62
	at org.jenkinsci.plugin.Diskcheck.preCheckout(Diskcheck.java:122)
	at jenkins.scm.SCMCheckoutStrategy.preCheckout(SCMCheckoutStrategy.java:76)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:484)
	at hudson.model.Run.execute(Run.java:1735)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
	at hudson.model.ResourceController.execute(ResourceController.java:97)
	at hudson.model.Executor.run(Executor.java:415)
[WARNINGS] Skipping publisher since build result is FAILURE
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in  5 second
Finished: FAILURE
}}

** PipelineでStackOverflowError [#acd15478]
- `Jenkins 2.63`で`Pipeline`プラグインを最新に更新すると`StackOverflowError`が発生する
-- 旧プロジェクトは問題なく実行できる
-- `StackOverflowError`が発生している環境は`CentOS release 6.8 (Final)` + `JDK 1.8.0_131 32bit`
-- `Jenkins 2.64` + [https://issues.jenkins-ci.org/browse/JENKINS-44578 JENKINS-44578 StackOverflowError in CpsTransformer running Declarative on JVMs with small -Xss in workflow-cps 2.33 - Jenkins JIRA]で修正された

#code{{
Started by user TERAI Atsuhiro
 > git rev-parse --is-inside-work-tree # timeout=10
Setting origin to https://github.com/aterai/java-swing-tips
 > git config remote.origin.url https://github.com/aterai/java-swing-tips # timeout=10
Fetching origin...
Fetching upstream changes from origin
 > git --version # timeout=10
 > git fetch --tags --progress origin +refs/heads/*:refs/remotes/origin/*
Seen branch in repository origin/master
Seen 1 remote branch
Obtained Jenkinsfile from ...
[Pipeline] End of Pipeline
java.lang.StackOverflowError
	at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
	at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:242)
	at java.io.File.exists(File.java:819)
	at sun.misc.URLClassPath$FileLoader.getResource(URLClassPath.java:1282)
	at sun.misc.URLClassPath$FileLoader.findResource(URLClassPath.java:1249)
	at sun.misc.URLClassPath.findResource(URLClassPath.java:215)
	at java.net.URLClassLoader$2.run(URLClassLoader.java:569)
	at java.net.URLClassLoader$2.run(URLClassLoader.java:567)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findResource(URLClassLoader.java:566)
	at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:546)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at com.sun.beans.finder.ClassFinder.findClass(ClassFinder.java:103)
	at com.sun.beans.finder.InstanceFinder.instantiate(InstanceFinder.java:93)
	at com.sun.beans.finder.InstanceFinder.find(InstanceFinder.java:66)
	at java.beans.Introspector.findExplicitBeanInfo(Introspector.java:448)
	at java.beans.Introspector.<init>(Introspector.java:398)
	at java.beans.Introspector.getBeanInfo(Introspector.java:173)
	at groovy.lang.MetaClassImpl$15.run(MetaClassImpl.java:3313)
	at java.security.AccessController.doPrivileged(Native Method)
	at groovy.lang.MetaClassImpl.addProperties(MetaClassImpl.java:3311)
	at groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:3288)
	at org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:260)
	at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:302)
	at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:312)
	at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:265)
	at org.codehaus.groovy.runtime.InvokerHelper.getMetaClass(InvokerHelper.java:879)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.createPojoSite(CallSiteArray.java:125)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:166)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
	at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:52)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
	at com.cloudbees.groovy.cps.CpsTransformer.visit(CpsTransformer.groovy:279)
...
}}

** インストール後ジョブがなければ再起動が無効 [#ce37a5da]
- 最近の`Weekly`版(`2.5x`頃?)は、「インストール完了後、ジョブがなければ`Jenkins`を再起動する」でジョブが実行中でも再起動されてしまい、ビルドが失敗する?
- 「ビルドを並列実行」を「しない」にしているビルドを複数を実行すると、後から実行したビルドがビルドキューに入らず、並列実行されてしまう
-- 「システムの設定」で「同時ビルド数」を`1`にすれば、並列実行されなくなる
-- [https://jenkins.io/security/advisory/2017-04-26/ Jenkins Security Advisory 2017-04-26]
--- SECURITY-412: Restart Jenkins immediately, after all builds are finished, or after all plugin installations and builds are finished
-- ジョブがエラーにはならなくなったが、実行中のジョブの終了は待たずにキャンセル扱いになる?

** 1.597でフォルダ構成が変更 [#b05af004]
- `Jenkins`を`1.597`にアップグレードしたら表示がおかしくなる
-- `1.597`で、`JENKINS_HOME`以下のフォルダ構成が変更になった
-- `Exception`をみると、`Disk usage plugin`がフォルダ文字列をパースできずにエラーを出している
-- [https://groups.google.com/forum/#!msg/jenkinsci-users/Ft-a2EYiGG0/5TofhX2pfO8J Important: Upgrading to Jenkins 1.597]
-- %%修正はまだスナップショットなので、当面`Disk usage plugin`を削除しておくことで対応%%

** Jenkinsの自動更新に失敗 [#w5f8768e]
- `Jenkins`の自動更新が失敗する
-- `Windows`サービス化している場合に失敗する?
-- [https://github.com/jenkinsci/jenkins/pull/1238 FIX JENKINS-22685 Jenkins cannot restart Windows service by gmjck ・ Pull Request #1238 ・ jenkinsci/jenkins]
--- 修正された https://issues.jenkins-ci.org/browse/JENKINS-22685
-- [https://issues.jenkins-ci.org/browse/JENKINS-13153 JENKINS-13153 "Upgrade Automatically" does not seem to work on Windows - Jenkins JIRA]
--- Windows環境で`JENKINS_HOME`を変更している場合、自動更新に失敗する不具合が`2.77`で修正された

** リポジトリブラウザの設定が保存されない [#s05adb81]
- %%[https://issues.jenkins-ci.org/browse/JENKINS-22064 JENKINS-22064 Git Repository Browser URL not saved anymore - Jenkins JIRA]で、URLが正常に保存されない%%
-- [https://github.com/jenkinsci/git-plugin/commit/b2a731e62272c93a60f7f45d9d3c5d3b1e57fa11 Merge pull request #211 from MarkEWaite/master-add-browser-url-round-tri... jenkinsci/git-plugin]で修正された

* Jenkinsの設定 [#d2460c6c]
- ホームディレクトリ(`Windows`環境)
-- デフォルトの`~/.jenkins`に実行ファイルやビルド結果を一緒に保存すると、バックアップなどが面倒
-- `C:\Program Files (x86)\Jenkins\`に`jenkins.exe`や`jenkins.war`をインストールすると`jenkins.xml`などが編集しづらいので、`C:\Jenkins`以下にインストールする
-- システム環境変数`JAVA_HOME`で指定したバージョンの`Java`を`Jenkins`が使用するように`C:\Jenkins\jenkins.xml`を変更
--- `<executable>%JAVA_HOME%\bin\java</executable>`
- 高度な設定(`Jenkins`の管理、システムの設定にあるボタンをクリック)
-- ワークスペース・ルートディレクトリ: `C:/HogeHoge/${ITEM_FULLNAME}`
-- ビルド・ルートディレクトリ: `${ITEM_ROOTDIR}/builds`

* Jenkinsfile [#z1d42b22]
- パイプラインで`ant`を呼び出す方法がよく分からないので、`~/.sdkman/candidates/ant/current/bin/ant`を直接呼んでいる
-- [https://issues.jenkins-ci.org/browse/JENKINS-42382 JENKINS-42382 AntInstallation not setting PATH+ANT - Jenkins JIRA]で、修正された?

#code{{
pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                git url: 'https://github.com/aterai/java-swing-tips.git'
            }
        }
        stage('PMD') {
            steps {
                sh "~/.sdkman/candidates/ant/current/bin/ant -file all.xml pmd"
                step([$class: 'PmdPublisher', pattern: '**/pmd.xml'])
            }
        }
        stage('CheckStyle') {
            steps {
                sh "~/.sdkman/candidates/ant/current/bin/ant -file all.xml checkstyle"
                step([$class: 'CheckStylePublisher', pattern: '**/checkstyle-result.xml'])
            }
        }
    }
}
}}

* プラグイン [#befd1883]
** GIT plugin [#f19e8447]
- `Git cliant plugin`も一緒にインストールされる
-- ログのエンコーディングが変更できない
--- %%ログの文字コードを`Shift_JIS`にカスタマイズする%%
--- `2.3.5`付近で修正された?ようなので、変更は不要になった

** Warnings Plug-in [#a89b3076]
- コンソールログから警告を集計してグラフ表示
-- 同じくログのエンコーディングが変更できない
--- %%ログの文字コードを`Shift_JIS`にカスタマイズする%%
--- [https://issues.jenkins-ci.org/browse/JENKINS-24611 #JENKINS-24611 Warnings plugin, missing AntJavaParser in the parser selection list - Jenkins JIRA]で修正された

* コメント [#comment]
#comment
#comment