2016-02-05 257 views
1

我试图使用这个有条件的多步骤插件,并为DSL编写了grrovy脚本,但是当我使用这段代码引导时,列出的步骤在条件块之前是外部的,我在这里做错了什么?Jenkins conditionalstep groovy脚本

编号:https://jenkinsci.github.io/job-dsl-plugin/#method/javaposse.jobdsl.dsl.helpers.step.StepContext.conditionalSteps

代码:

其被创建如图

npm install 
mkdir buildArchive 

Conditional step 

而不是

Conditional step 
{ 
    npm install 
    mkdir buildArchive 
} 

我在做什么错

def configSeed(environment, slaveLabel) { 
    { it -> 
     parameters { 
     stringParam('BUILD_REQUIRED', 'true', ''); 
    } 
    scm { 
     git { 
      remote { 
       name('origin'); 
       url('xyz'); 
       refspec('$GERRIT_REFSPEC'); 
       credentials('xyz'); 
      } 
      branch('$GERRIT_BRANCH'); 
      strategy { 
       gerritTrigger(); 
      } 
     } 
    } 
    steps { 
     conditionalSteps { 
      condition { 
       stringsMatch('${BUILD_REQUIRED}', 'true', false) 
      } 
      runner('Fail') 
      steps { 
       environmentVariables { 
        envs(environment); 
       } 
       batchFile(''' 
        call npm install 
        ''');     
       batchFile(''' 
        call mkdir buildArchive 
        '''); 
      } 
     } 
    } 
    publishers { 
     wsCleanup { 
      includePattern('build/**') 
     } 
    } 
    wrappers { 
     preBuildCleanup(); 
     timeout { 
      noActivity(300); 
      abortBuild(); 
     } 
    } 
    label(slaveLabel); 
} 
}; 

所以詹金斯工作 这里?

+0

什么_“...列出的步骤是在条件块之前...”是_是什么意思? –

+0

@tim_yates更新了上述说明。我在上面的条件步骤之外看到命令,而不是在它之内。 – NxC

回答

2

当你生成你的脚步配置

job('foobar') { 
    steps { 
     conditionalSteps { 
      condition { 
       stringsMatch('${BUILD_REQUIRED}', 'true', false) 
      } 
      runner('Fail') 
      steps { 
       environmentVariables { 
        envs(FOO: 'bar', TEST: '123') 
       } 
       batchFile('call npm install')    
       batchFile('call mkdir buildArchive') 
      } 
     } 
    } 
} 

作业的结果似乎很动听:

enter image description here

根据我的经验,当你有作业DSL语法和任何问题,其结果,一个好的方法是区分作业的config.xml文件:

  • 根据需要手动配置作业,并保存config.xml
  • 在本地生成作业并保存config.xml
  • 区分两个配置文件并查找确切的XML标记为了
  • 然后尝试和错误,看看是当你改变工作DSL脚本

要去当我开始使用作业DSL与常规的经验 - 尤其是关闭) - 我有很多当我尝试将作业配置块提取到类似于您的情况的方法时出现类似问题。这是帮助我了解真正发生了什么的。