下記のサンプルコードは、Jenkins で定義されているすべてのジョブの情報を表示します。 スクリプトコンソールに張り付けて実行することができます。
jenkins.model.Jenkins.instance.items.each { job ->
println "Name: ${job.name}"
println "Class: ${job.class}"
println "Root Dir: ${job.rootDir}"
println "URL: ${job.url}"
println "Absolute URL: ${job.absoluteUrl}"
println "Description: ${job.description}"
if (job.lastSuccessfulBuild != null) {
println "Last successful time: ${job.lastSuccessfulBuild.timestamp.time}"
}
println '----'
}
ループ中に参照可能な Job オブジェクトの詳細に関しては、下記の API ドキュメントを参照してください。
Name: MySampleJob1
Class: class hudson.model.FreeStyleProject
Root Dir: C:\app\Jenkins\jobs\MySampleJob1
URL: job/MySampleJob1/
Absolute URL: http://localhost:8080/job/MySampleJob1/
Description: despcription text
Last successful time: Tue Aug 23 16:34:04 JST 2016
----
Name: MySampleJob2
Class: class hudson.model.FreeStyleProject
Root Dir: C:\app\Jenkins\jobs\MySampleJob2
URL: job/MySampleJob2/
Absolute URL: http://localhost:8080/job/MySampleJob2/
Description: despcription text
----
各ジョブの setter 系メソッドを使用すれば、スクリプトからジョブの設定を変更することができます。 下記の例では、すべてのジョブの説明 (Description) をまとめて変更しています。
import java.util.Calendar
Calendar cal = Calendar.getInstance()
jenkins.model.Jenkins.instance.items.each { job ->
job.setDescription("Updated at ${cal.getTime().toString()}")
println "Name: ${job.name}"
println "Description: ${job.description}"
println '----'
}
Name: MySampleJob1
Description: Updated at Tue Aug 23 17:45:51 JST 2016
----
Name: MySampleJob2
Description: Updated at Tue Aug 23 17:45:51 JST 2016
----
すべてのジョブの名前を一括で変更してしまうこともできます(実行するときは慎重に)。
println "Renaming all jobs ..."
count = 1
jenkins.model.Jenkins.instance.items.each { job ->
job.renameTo("SampleJob ${count++}")
}