を使ってすべてのジョブのジョブタイムアウトを設定するにはHow can I set the job timeout using the Jenkins DSLを読んでください。 1つのジョブのタイムアウトが設定されます。私はすべてのジョブに対して、わずかに異なる設定(150%、10ジョブ以上の平均化、最大30分)を設定したいと考えています。私はこの構文を使用する必要がありますrelevant job-dsl-plugin documentationによるとJenkins DSL
:
job('example-3') {
wrappers {
timeout {
elastic(150, 10, 30)
failBuild()
writeDescription('Build failed due to timeout after {0} minutes')
}
}
}
私はhttp://job-dsl.herokuapp.com/でテストし、これは、関連するXMLの一部です:
<buildWrappers>
<hudson.plugins.build__timeout.BuildTimeoutWrapper>
<strategy class='hudson.plugins.build_timeout.impl.ElasticTimeOutStrategy'>
<timeoutPercentage>150</timeoutPercentage>
<numberOfBuilds>10</numberOfBuilds>
<timeoutMinutesElasticDefault>30</timeoutMinutesElasticDefault>
</strategy>
<operationList>
<hudson.plugins.build__timeout.operations.FailOperation></hudson.plugins.build__timeout.operations.FailOperation>
<hudson.plugins.build__timeout.operations.WriteDescriptionOperation>
<description>Build failed due to timeout after {0} minutes</description>
</hudson.plugins.build__timeout.operations.WriteDescriptionOperation>
</operationList>
</hudson.plugins.build__timeout.BuildTimeoutWrapper>
</buildWrappers>
私は私の前に手動で編集の仕事を検証し、 XMLは正しいです。だから私はここまでのJenkins DSL構文が正しいことを知っています。
これをすべてのジョブに適用したいと考えています。最初に、すべてのジョブ名を一覧表示しようとしました:
import jenkins.model.*
jenkins.model.Jenkins.instance.items.findAll().each {
println("Job: " + it.name)
}
これも機能し、すべてのジョブ名がコンソールに出力されます。
ここではすべて一緒に接続したいと思います。私はこのコードをプッシュすると、ジェンキンスは、DSLシードジョブを実行するとき、私はこのエラーを取得する
import jenkins.model.*
jenkins.model.Jenkins.instance.items.findAll().each {
job(it.name) {
wrappers {
timeout {
elastic(150, 10, 30)
failBuild()
writeDescription('Build failed due to timeout after {0} minutes')
}
}
}
}
:これは私が使用する完全なコードです
ERROR: Type of item "jobname" does not match existing type, item type can not be changed
は、私はここで間違って何をしているのですか?
ありがとうございます。私は、Job-DSLプラグインがそのプラグインによって作成されたジョブしか維持できないと述べた文書は見つかりませんでした。率直に言って、それは私の使い勝手を厳しく制限しています。 xmlstarletを提案していただきありがとうございます、私は過去にそれを使用しました。あるいは、私はちょうどgrep&sedの魔法を適用します。 –