2017-03-24 5 views
0

特定の時刻(期限)にタイムアウトするにはビルドが必要ですが、現在Jenkins dslは「絶対」戦略のみをサポートしています。だから私はconfigureブロックを書こうとしましたが、デッドライン値が異なるジョブを作成できませんでした。Jenkins dsl configureブロックで異なる値を指定して別のジョブを作成する

<project> 
    <actions></actions> 
    <description></description> 
    <keepDependencies>false</keepDependencies> 
    <properties></properties> 
    <scm class='hudson.scm.NullSCM'></scm> 
    <canRoam>true</canRoam> 
    <disabled>false</disabled> 
    <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding> 
    <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding> 
    <triggers></triggers> 
    <concurrentBuild>false</concurrentBuild> 
    <builders></builders> 
    <publishers></publishers> 
    <buildWrappers> 
     <hudson.plugins.build__timeout.BuildTimeoutWrapper> 
      <strategy class='hudson.plugins.build_timeout.impl.DeadlineTimeOutStrategy'> 
       <deadlineTime>14:05:00</deadlineTime> 
       <deadlineToleranceInMinutes>1</deadlineToleranceInMinutes> 
      </strategy> 
     </hudson.plugins.build__timeout.BuildTimeoutWrapper> 
    </buildWrappers> 
</project> 

私はthis question見つかりましたが、まだそれが仕事を得ることができませんでした:

def settings = [ 
    [ 
     jobname: 'job1', 
     ddl: '13:10:00' 
    ], 
    [ 
     jobname: 'job2', 
     ddl: '14:05:00' 
    ] 
] 


for (i in settings) { 
    job(i.jobname) { 
     configure { 
      it/buildWrappers << 'hudson.plugins.build__timeout.BuildTimeoutWrapper' { 
       strategy(class:'hudson.plugins.build_timeout.impl.DeadlineTimeOutStrategy') { 
        deadlineTime(i.ddl) 
        deadlineToleranceInMinutes(1) 
       } 
      } 
     } 
     steps { 
      // some stuff to do here 
     } 
    } 
} 

上記のスクリプトは私に同じ締切時間(午後02時05分〇〇秒)を持つ2つのジョブを提供します。

答えて

2

あなたは幸いタイムアウトだからあなたは、余分な層があり

def settings = [ 
    [ 
     jobname: 'job1', 
     ddl: '13:10:00' 
    ], 
    [ 
     jobname: 'job2', 
     ddl: '14:05:00' 
    ] 
] 


for (i in settings) { 
    job(i.jobname) {   
     wrappers { 
      buildTimeoutWrapper { 
      strategy { 
       deadlineTimeOutStrategy { 
       deadlineTime(i.ddl) 
       deadlineToleranceInMinutes(1) 
       } 
      } 
      timeoutEnvVar('WHAT_IS_THIS_FOR') 
      } 
     } 

     steps { 
      // some stuff to do here 
     } 
    } 
} 

ような何かを行うことができるはず支援DataBoundConstructors

@DataBoundConstructor 
public DeadlineTimeOutStrategy(String deadlineTime, int deadlineToleranceInMinutes) { 
    this.deadlineTime = deadlineTime; 
    this.deadlineToleranceInMinutes = deadlineToleranceInMinutes <= MINIMUM_DEADLINE_TOLERANCE_IN_MINUTES ? MINIMUM_DEADLINE_TOLERANCE_IN_MINUTES 
      : deadlineToleranceInMinutes; 
} 

プラグインAutomatic Generated API

The generated DSL is only supported when running in Jenkins, e.g. it is 
not available when running from the command line or in the Playground. 

Use The Configure Block to generate custom config elements when not 
running in Jenkins. 

The generated DSL will not work for all plugins, e.g. if a plugin does 
not use the @DataBoundConstructor and @DataBoundSetter annotations to 
declare parameters. In that case The Configure Block can be used to 
generate the config XML. 

を使用することができます異なるストラットを収容するBuildTimeoutWrapper


EDIT

を小文字にしますが、クラスの最初の文字を設定する必要が入れ子になったクラスを使用している場合あなたは、これはあなた自身のジェンキンスで「ジョブのDSLを使用してインストールtegies

を見ることができますジョブページでAPIリファレンス」リンク

http://<your jenkins>/plugin/job-dsl/api-viewer/index.html#method/javaposse.jobdsl.dsl.helpers.wrapper.WrapperContext.buildTimeoutWrapper 

enter image description here

+0

これは私の質問には答えません。しかし、それは私が解決しようとしている問題に対するより良いアプローチです。ありがとうございました! –

関連する問題