Jenkins のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Jenkins へ行く。
- 1 (2017-06-02 (金) 13:06:40)
- 2 (2017-06-02 (金) 14:10:18)
- 3 (2017-06-04 (日) 13:13:00)
- 4 (2017-06-05 (月) 16:47:03)
- 5 (2017-06-06 (火) 17:25:57)
- 6 (2017-06-08 (木) 19:43:16)
- 7 (2017-06-20 (火) 14:44:39)
- 8 (2017-06-20 (火) 20:22:46)
- 9 (2017-06-26 (月) 15:05:14)
- 10 (2017-09-19 (火) 05:00:57)
- 11 (2017-09-19 (火) 20:23:22)
- 12 (2017-10-10 (火) 18:03:22)
- 13 (2017-10-12 (木) 13:33:52)
- 14 (2017-10-13 (金) 16:26:23)
- 15 (2018-02-15 (木) 14:23:42)
- 16 (2018-11-20 (火) 22:22:59)
- 17 (2018-11-21 (水) 15:38:00)
- 18 (2018-11-21 (水) 20:20:28)
- 19 (2018-11-21 (水) 21:25:14)
- 20 (2018-12-10 (月) 16:52:52)
- 21 (2019-02-05 (火) 19:49:39)
- 22 (2019-02-06 (水) 21:04:56)
- 23 (2019-02-06 (水) 22:19:26)
- 24 (2019-02-07 (木) 14:10:08)
- keywords: [Jenkins, Java] description: Jenkinsに関するメモ author: aterai pubdate: 2017-06-02
概要
Jenkins
に関するメモを記述しています。
トラブル
PipelineでStackOverflowError
- 06/01に
Pipeline
プラグイン(もしくはGitHub
プラグイン)を最新に更新すると、StackOverflowError
が発生するようになった? - 調査中
- 旧プロジェクトは問題なく実行できる
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)
...
インストール後ジョブがなければ再起動が無効
- プラグインのインストール後、「インストール完了後、ジョブがなければ
Jenkins
を再起動する」にチェックするとジョブが実行中でも再起動してしまう- ジョブがエラーにはならなくなったが、実行中のジョブの終了は待たずにキャンセル扱いになる?
- 同じく「ビルドを並列実行」しないに設定しても並列実行されてしまうようになった?
1.597でフォルダ構成が変更
Jenkins
を1.597
にアップグレードしたら表示がおかしくなる1.597
で、JENKINS_HOME
以下のフォルダ構成が変更になったException
をみると、Disk usage plugin
がフォルダ文字列をパースできずにエラーを出している- Important: Upgrading to Jenkins 1.597
修正はまだスナップショットなので、当面Disk usage plugin
を削除しておくことで対応
Jenkins
の自動更新に失敗
Jenkins
の自動更新が失敗する
リポジトリブラウザの設定が保存されない
[JENKINS-22064 Git Repository Browser URL not saved anymore - Jenkins JIRA]で、URLが正常に保存されない
Jenkinsの設定
- ホームディレクトリ(
Windows
環境)- デフォルトの
~/.jenkins
に実行ファイルやビルド結果を一緒に保存すると、バックアップなどが面倒 C:\Program Files (x86)\Jenkins\
にjenkins.exe
やjenkins.war
をインストールするとjenkins.xml
などが編集しづらいので、C:\Jenkins_JAR
以下にインストールするC:\Jenkins_JAR\jenkins.xml
を以下のように変更し、プラグインやビルドをC:\jenkins
に変更する<env name="JENKINS_HOME" value="C:\jenkins"/>
- システム環境変数
JAVA_HOME
で指定したバージョンのJava
をJenkins
が使用するようにC:\Jenkins_JAR\jenkins.xml
を変更<executable>%JAVA_HOME%\bin\java</executable>
- デフォルトの
- 高度な設定(
Jenkins
の管理、システムの設定にあるボタンをクリック)- ワークスペース・ルートディレクトリ:
C:/Edian/${ITEM_FULLNAME}
- ビルド・ルートディレクトリ:
${ITEM_ROOTDIR}/builds
- ワークスペース・ルートディレクトリ:
プラグイン
GIT plugin
- Git cliant plugin も一緒にインストールされる
- ログのエンコーディングが変更できない
ログの文字コードをShift_JIS
にカスタマイズする2.3.5
付近で修正された?ようなので、変更は不要になった
- ログのエンコーディングが変更できない
Warnings Plug-in
- コンソールログから警告を集計してグラフ表示
- 同じくログのエンコーディングが変更できない
ログの文字コードをShift_JIS
にカスタマイズする- #JENKINS-24611 Warnings plugin, missing AntJavaParser in the parser selection list - Jenkins JIRAで修正された
- 同じくログのエンコーディングが変更できない
ソースコード管理
- git
[i18n] filesEncoding = Shift_JIS #不要: logoutputencoding = Shift_JIS #UTF-8
- または、Jenkinsのサービスを起動するユーザになって、以下を実行
> git config --global i18n.filesEncoding Shift_JIS
- ~~Git plugin は、別ブランチでShift_JIS版を作成し、mvn コマンドでビルドしている(注: テストはスキップ、現状JDK 1.8.0 ではエラーになる!)~~ ~~> mvn -Dmaven.test.skip=true~~
### ビルド・トリガ
~定期的に実行~
- ~~(例えば月-金の8-9時に一回ビルド): H H(8-9) * * 1-5~~ - ~~「定期的に実行」するのは master版とdevelop版で、release版は中止~~ - 「ビルド回数が無駄に増加するので辞めたら」と提案があったので中止、以下の「SCMをポーリング」する方法に変更
- SCMをポーリング
- (例えば月-金の8-9時に一回 gitリポジトリをチェックし、更新があればビルド): H H(8-9) * * 1-5 - 「SCMをポーリング」して、ビルドするのは master版と develop版 - release版は手動ビルドのみ
### ビルド後の処理
- コンパイラの警告の集計
- ログの集計: MSBuild - ~~Warning pluginが標準出力をUTF-8固定で読み込んでいるので、文字化けする~~ - ~~`java "-Dfile.encoding=Shift_JIS" "-Dsun.jnu.encoding=Shift_JIS" -jar jenkins.war` などで指定しても無駄...~~ このオプションを指定することで文字化けしなくなった。よって以下は不要。 - cl.exe が標準出力に出す文字コードを変換する方法は存在しない? - 仕方がないので、以下のようにWarning pluginを修正して差し替える - `mvn install -Dmaven.test.skip=true` - 上記で`warnings.hpi`を生成して、プラグインの管理、高度な設定、プラグインのアップロードでインストール - `-Dmaven.test.skip=true`オプションを付けて、テストをスキップしないと時間が掛かる(テスト用jarのダウンロード時間、テスト環境設定不備でhpiの生成に失敗など) public class WarningsPublisher extends HealthAwareRecorder { private static final String CONSOLE_LOG_ENCODING = "MS932"; //"UTF-8";
- 静的解析結果を集計