Hudson CLI経由でジョブを追加したり変更したり削除したりする
なんかあれこれやってたらできた。
やり方が正しいかどうかは自信がない。
あと、初Groovy。
接続する
$ java -jar hudson-cli.jar -s http://localhost/ groovysh Groovy Shell (1.6.0, JVM: 1.6.0_13) Type 'help' or '\h' for help. ------------------------------------------------------------------------------- groovy:000> import hudson.model.*; ===> [import hudson.model.*;] groovy:000> hudson = Hudson.instance ===> hudson.model.Hudson@1af9e98
ジョブを作成してみる
groovy:000> import hudson.maven.*; ===> [import hudson.model.*;, import hudson.maven.*;] groovy:000> hudson.createProject(MavenModuleSet.DESCRIPTOR, "hoge") ERROR groovy.lang.MissingPropertyException: No such property: MavenModuleSet for class: groovysh_evaluate at groovysh_evaluate.run (groovysh_evaluate:3) ...
なんか怒られた。
MavenModuleSetが見つからないらしい。
いったん諦めて、ジョブをコピーしてみる
groovy:000> baseJob = hudson.getItem("BaseJob") ===> hudson.maven.MavenModuleSet@1c20de3[BaseJob] groovy:000> copyJob = hudson.copy(baseJob, "CopyJob") ===> hudson.maven.MavenModuleSet@1a9b093[CopyJob]
できた。
ビルド・トリガの設定を変更してみる
groovy:000> import hudson.triggers.*; ===> [import hudson.model.*;, import hudson.maven.*;, import hudson.triggers.*;] groovy:000> copyJob.addTrigger(new SCMTrigger("0 0 * * *")) ===> null
Subversionの設定を変更してみる
groovy:000> import hudson.scm.*; ===> [import hudson.model.*;, import hudson.triggers.*;, import hudson.maven.*;, import hudson.scm.*;] groovy:000> scm = new SubversionSCM("http://localhost/svn/hoge") ERROR org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, groovysh_evaluate: 6: You cannot create an instance from the abstract class 'hudson.scm.SCM'. @ line 6, column 7. 1 error at java_lang_Runnable$run.call (Unknown Source) at hudson.cli.GroovyshCommand.main (GroovyshCommand.java:64) at hudson.model.Hudson$CliManager.main (Hudson.java:2756) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform (RemoteInvocationHandler.java:264) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call (RemoteInvocationHandler.java:245) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call (RemoteInvocationHandler.java:205) at hudson.remoting.UserRequest.perform (UserRequest.java:103) at hudson.remoting.UserRequest.perform (UserRequest.java:47) at hudson.remoting.Request$2.run (Request.java:236)
む、またしてもエラー。
copyJob.getScm()で取得できるクラスなのになぁ。。。
ふと、今あるインスタンスから新しいインスタンスを作ってみる
groovy:000> scm = copyJob.getScm().class.newInstance("http://localhost/svn/hoge") ===> hudson.scm.SubversionSCM@e7630 groovy:000> copyJob.setScm(scm) ===> null
できた。なんでだろ?
ということは…
groovy:000> createJob = hudson.createProject(copyJob.class.DESCRIPTOR, "fuga") ===> hudson.maven.MavenModuleSet@1d7cf67[fuga]
こっちもできた。
そして削除してみる
groovy:000> hudson.deleteJob(createJob) ===> null
よかったよかった。