ラベル Jenkins の投稿を表示しています。 すべての投稿を表示
ラベル Jenkins の投稿を表示しています。 すべての投稿を表示

2013年11月3日日曜日

Subverion1.8で作成したリポジトリを1.7用にダウングレードする

JenkinsのSCMポーリングで失敗するため、Subverionを1.8から1.7に入れ替えた。
その際、リポジトリがそのままでは使えなかったため、行った内容をメモしておく。

もっとスマートな方法があるかもしれないが、今回はdumpコマンドを使って行った。

まず、1.8で以下のコマンドを実行して、リポジトリ全体をファイルにダンプする。
# svnadmin dump <リポジトリ> > <ダンプファイル>
次に、1.7で以下のコマンドを実行して、ダンプしたリポジトリを復元する。
# svnadmin create <新しいリポジトリ>
# svnadmin load <新しいリポジトリ> < <ダンプファイル>

JenkinsのSCMポーリングでエラーが出力される

JenkinsでSCMのポーリングを設定したところ、以下のようなエラーが出る。
ERROR: Failed to check repository revision for <リポジトリ>
org.tmatesoft.svn.core.SVNException: svn: E210004: Number is larger than maximum
at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64)
at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)
at org.tmatesoft.svn.core.internal.io.svn.SVNReader.readItem(SVNReader.java:400)
at org.tmatesoft.svn.core.internal.io.svn.SVNReader.readItem(SVNReader.java:456)
at org.tmatesoft.svn.core.internal.io.svn.SVNReader.readItem(SVNReader.java:456)
at org.tmatesoft.svn.core.internal.io.svn.SVNReader.readItem(SVNReader.java:456)
at org.tmatesoft.svn.core.internal.io.svn.SVNReader.readItem(SVNReader.java:456)
at org.tmatesoft.svn.core.internal.io.svn.SVNReader.readTuple(SVNReader.java:288)
at org.tmatesoft.svn.core.internal.io.svn.SVNReader.parse(SVNReader.java:241)
at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.read(SVNConnection.java:272)
at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.read(SVNRepositoryImpl.java:1290)
at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.info(SVNRepositoryImpl.java:1203)
at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteGetInfo.run(SvnRemoteGetInfo.java:65)
at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteGetInfo.run(SvnRemoteGetInfo.java:31)
at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1235)
at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:291)
at org.tmatesoft.svn.core.wc.SVNWCClient.doInfo(SVNWCClient.java:2461)
at hudson.scm.SubversionSCM.parseSvnInfo(SubversionSCM.java:1122)
at hudson.scm.CompareAgainstBaselineCallable.call(CompareAgainstBaselineCallable.java:71)
at hudson.scm.CompareAgainstBaselineCallable.call(CompareAgainstBaselineCallable.java:26)
at hudson.remoting.LocalChannel.call(LocalChannel.java:45)
at hudson.scm.SubversionSCM.compareRemoteRevisionWith(SubversionSCM.java:1278)
at hudson.scm.SCM._compareRemoteRevisionWith(SCM.java:356)
at hudson.scm.SCM.poll(SCM.java:373)
at hudson.model.AbstractProject._poll(AbstractProject.java:1548)
at hudson.model.AbstractProject.poll(AbstractProject.java:1473)
at hudson.triggers.SCMTrigger$Runner.runPolling(SCMTrigger.java:439)
at hudson.triggers.SCMTrigger$Runner.run(SCMTrigger.java:468)
at hudson.util.SequentialExecutionQueue$QueueEntry.run(SequentialExecutionQueue.java:118)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)
Caused by: svn: E210004: Number is larger than maximum
at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:208)
at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:154)
at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:97)
at org.tmatesoft.svn.core.internal.io.svn.SVNReader.readItem(SVNReader.java:399)
... 33 more
Done. Took 1 sec
No changes
以下のサイトに同様の現象が報告されていた。
https://issues.jenkins-ci.org/browse/JENKINS-18844

どうもSubversion 1.8を使っていることが関連しているらしい。
現状は1.8を使わなければいけない理由はないため、1.7にダウングレードしてみる。

その結果、正常にポーリングができた。
Subversionのポーリングログ
Started on Nov 3, 2013 8:31:46 PM
Received SCM poll call on  for MediaCollect on Nov 3, 2013 8:31:46 PM
<リポジトリ> is at revision 14
Done. Took 0.2 sec
No changes

2013年10月27日日曜日

Jenkinsからdoxygenを使う

Jenkinsで「Doxygen Plugin」をインストール
「Jenkinsの管理」->「プラグインの管理」->「利用可能」->「Jenkins Doxygen Plug-in」
Jenkinsでプロジェクトを作成

「/usr/local/jenkins/jobs/<プロジェクト名>/workspace/」に<doxygenのconfigファイル>を格納する

doxygenの出力ファイルを格納するフォルダを作成する
% mkdir /usr/local/jenkins/jobs/<プロジェクト名>/workspace/doxygen
<doxygenのconfigファイル>をJenkinsのフォルダ構成にあわせて変更する
OUTPUT_DIRECTORY       = doxygen
INPUT                  = trunk
プロジェクトの設定を変更する。
「ソースコード管理」->「ローカルモジュールディレクトリ (オプション)」
※workspace配下にdoxygenの出力ファイルを置くために、ソースをチェックアウトするフォルダを変更
trunk 
「ビルド」->「シェルの実行」
doxygen <doxygenのconfigファイル>
「ビルド後の処理」->「Publish Doxygen」->「Doxyfile path」
<doxygenのconfigファイル>
ビルドを実行する。
成功するとプロジェクトに「DoxyGen HTML」へのリンクが表示される。



参考サイト
http://hidari-lab.hatenablog.com/entry/doxygen_and_jenkins

課題
ソースのチェックアウトにやたら時間がかかるのが気になった。
どうやら、ソースに画像や動画が含まれているときJenkinsの動作に課題があるらしい。
参考サイト
http://kkkon.sakura.ne.jp/wp3/2012/08/27/jenkins-subversion-plugin-is-stoick/

2013年10月26日土曜日

FreeBSDでJenkinsを立ち上げる

まずはインストール。
# pkg_add -r jenkins
起動してみる。
# /usr/local/etc/rc.d/jenkins onestart
立ち上げたホストに別PCのブラウザからアクセスしてみる。
http://<ホスト名>:8180/jenkins
残念ながら、表示できず。
ログを確認。
# less /var/log/jenkins.log
Oct 26, 2013 9:49:12 PM hudson.UDPBroadcastThread run
WARNING: UDP handling problem
java.net.SocketException: Invalid argument
        at java.net.PlainDatagramSocketImpl.join(Native Method)
        at java.net.AbstractPlainDatagramSocketImpl.join(AbstractPlainDatagramSocketImpl.java:168)
        at java.net.MulticastSocket.joinGroup(MulticastSocket.java:300)
        at hudson.UDPBroadcastThread.run(UDPBroadcastThread.java:76)
Oct 26, 2013 9:49:12 PM hudson.WebAppMain$2 run
INFO: Jenkins is fully up and running
Oct 26, 2013 9:49:12 PM hudson.DNSMultiCast$1 call
WARNING: Failed to advertise the service to DNS multi-cast
java.net.SocketException: Invalid argument
        at java.net.PlainDatagramSocketImpl.join(Native Method)
        at java.net.AbstractPlainDatagramSocketImpl.join(AbstractPlainDatagramSocketImpl.java:168)
        at java.net.MulticastSocket.joinGroup(MulticastSocket.java:300)
        at javax.jmdns.impl.JmDNSImpl.openMulticastSocket(JmDNSImpl.java:459)
        at javax.jmdns.impl.JmDNSImpl.<init>(JmDNSImpl.java:420)
        at javax.jmdns.JmDNS.create(JmDNS.java:60)
UDPのソケット周りでエラーが発生している模様。
https://code.google.com/p/epid-project/issues/detail?id=1
を見てみると、IPv6のアドレスを設定しているとこのエラーが出るらしい。
パラメータを指定して再度実行。
# /usr/local/etc/rc.d/jenkins stop
# env jenkins_java_opts=-Djava.net.preferIPv4Stack=true /usr/local/etc/rc.d/jenkins onestart
ログにはさきほどのエラーは出なくなったが、依然として表示はできない。
/usr/local/etc/rc.d/jenkinsを眺めてみると以下の記載を発見。
: ${jenkins_args="--webroot=${jenkins_home}/war --httpListenAddress=127.0.0.1 --httpPort=8180 --ajp13ListenAddress=127.0.0.1 --ajp13Port=8009 --prefix=/jenkins"}
ローカルホストのアドレスで待ち受けるようになっている模様。
アドレスの指定を削除してみる。
# env jenkins_java_opts=-Djava.net.preferIPv4Stack=true "jenkins_args=--webroot=/usr/local/jenkins/war --httpPort=8180 --ajp13ListenAddress=127.0.0.1 --ajp13Port=8009 --prefix=/jenkins" /usr/local/etc/rc.d/jenkins onestart
今度は無事、表示された。


サーバ起動時にJenkinsがスタートするように「/etc/rc.conf」に以下の設定を追加して完了。
jenkins_enable="YES"
jenkins_java_opts="-Djava.net.preferIPv4Stack=true"
jenkins_args="--webroot=/usr/local/jenkins/war --httpPort=8180 --ajp13ListenAddress=127.0.0.1 --ajp13Port=8009 --prefix=/jenkins"