2017-05-25 32 views
1

我有一份工作,我魔杖每10分鐘開始一個特定分支上的特定參數。Jenkinsfile - 用不同的參數觸發不同的分支

我用這個代碼來設置參數,並啓動作業每隔10分鐘:

properties([ 
    parameters([ 
     string(defaultValue: 'regularPipeline', description: 'A parameter to run the health monitoring', name: 'Health') 
    ]), 
    pipelineTriggers([ 
    [ 
     $class: 'hudson.triggers.TimerTrigger', 
     spec: "H/10 * * * *" 
    ] 
    ]) 
]) 

我怎樣才能讓TimerTrigger接收PARAM。我怎樣才能在一個特定的佈道上運行這項工作?

+0

我認爲最後一部分沒有意義。 'properties'隻影響IIRC作業的_next_運行 - 除非你真的在多個分支中使用這個'Jenkinsfile',並且只希望每10分鐘觸發一次該作業。 – StephenKing

+0

試着更清楚些,爲什麼你想要這些條件。當作業被觸發時,應該使用參數的默認值(並且可以通過'params'在作業內部進行訪問)。 – StephenKing

+0

@StephenKing我在多個分支中使用這個Jenkinsfile,我想在特定的分支中每隔10分鐘用一個特定的參數觸發一次構建。我會更新這個問題。謝謝! –

回答

0

下面的僞代碼(可能包含語法錯誤)應該有所幫助:

def triggers = [] 
if (env.BRANCH_NAME == 'master') { 
    triggers << [ 
    $class: 'hudson.triggers.TimerTrigger', 
    spec: "H/10 * * * *" 
    ] 
} 
properties([ 
    parameters([ 
    string(defaultValue: 'regularPipeline', description: 'A parameter to run the health monitoring', name: 'Health') 
    ]), 
    pipelineTriggers(triggers) 
]) 

在非主分支的情況下,將不設置觸發器。對於主分支,您將應用以上定義的TimerTrigger

+0

當然,那麼只需爲_master_分支設置另一個默認值即可。將'defaultValue'像觸發器一樣提取到一個變量中。 – StephenKing

+0

@StephanKing這可以工作。我還需要使用param'Health'啓動定時任務,該參數不是默認參數。這可能嗎? –

+0

或稱爲「健康」的參數。只要你喜歡。 – StephenKing