簡體   English   中英

使用groovy更改jenkins中的作業參數值

[英]Change job parameter value in jenkins using groovy

我對 Jenkins 管道中的每個參數都有一個默認值,現在我只想替換其中的一個參數,如何使用 groovy 來做到這一點?

我已經筋疲力盡地搜索了,但似乎沒有任何效果:(

我嘗試了下面的代碼,它沒有任何錯誤,但是正在安排的作業沒有更新的參數(env_name)值,它具有默認值

def getCause(){
return new CauseAction(new hudson.model.Cause.UserIdCause('admin-user'))
}

def job = Jenkins.instance.getItemByFullName('JobName');
if(job && job.isBuildable()){
   def newParameter = new StringParameterValue('env_name', 'dev') 
   job.replaceAction(new ParametersAction(newParameter))
   def buildResult = job.scheduleBuild2(0, getCause())
}

這可以通過不同的方式解決,探索了一些方法並找到了修改 jenkins 中現有構建屬性的方法

def formParam(job){
    ParametersDefinitionProperty params = job.getProperty(ParametersDefinitionProperty.class);
    List<ParameterValue> newParams = new ArrayList<>();
    params.getParameterDefinitions().each{param -> newParams.add(param.getDefaultParameterValue())};
    newParams.removeIf{param -> param.getName().contains("env_name")};
    newParams.add(new StringParameterValue("env_name","dev",""))
    return newParams;
}

def main(){
    def job = Jenkins.instance.getItemByFullName('JobName');
    def paramlist = formParam(job);
    def future = job.scheduleBuild2(0, getCause(), new ParametersAction(paramlist));
}

params 變量將具有指定作業的所有構建屬性,我正在創建一個 newParams 列表並向其添加默認值。 添加后,我將刪除我要替換的那個,然后為同一個鍵添加一個新值。 這是一個可行的解決方案,它甚至不會修改 jenkins 作業的作業配置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM