在jenkins DSL插件中执行多行命令

在jenkins DSL插件中执行多行命令,jenkins,plugins,dsl,Jenkins,Plugins,Dsl,使用Jenkins 2 希望从git存储库生成动态选择。因此,在GroovySrcit的脚本部分中 job('example') { parameters { activeChoiceParam('CHOICE-1') { description('Allows user choose from multiple choices') filterable() choiceType('SINGLE_SELECT') groovyScript { // script('["c

使用Jenkins 2

希望从git存储库生成动态选择。因此,在GroovySrcit的脚本部分中

job('example') {
parameters {
 activeChoiceParam('CHOICE-1') {
  description('Allows user choose from multiple choices')
  filterable()
  choiceType('SINGLE_SELECT')
  groovyScript {
   // script('["choice1", "choice2"]')
   script('-DYNANIC CHOICES-REF-PESUDO-CODE')
   fallbackScript('"fallback choice"')
  }
 }
}}
伪代码

groovyScript {
 script('
   // call git repo and fetch some branches info.
   // collect them in some local variable and return them as choices
   def branches = "git branch -l"
   return branches 
 ')
 fallbackScript('"fallback choice"')
}
在我的例子中,它总是使用回退脚本。
请共享您的输入。

在作业真正开始之前会显示Jenkins作业或管道输入。
我也面临同样的要求,最后完成了一项更新自身参数设置并要求重新运行的工作

即:

  • 检查作业设置是否正常
    • 如果不正常,则创建并用“取消”更新作业状态,并向用户提供消息或说明
    • 作业正常,这意味着用户在此阶段已经提供了参数
编辑

示例代码:


EXPECTED_VERSION = "v1.1"

// check setup : read variable "SETUP_VERSION" and compare with constant in code
if ( "${SETUP_VERSION}" != "${EXPECTED_VERSION}" ) {
  // if different, run setup and stop build
  createSetup()
  echo "Setup updated, please restar"
  currentBuild.result = 'ABORTED'
}
// else continue processing
...

// create setup
void createSetup() {

    def myParameters = [choice(
            choices: "${EXPECTED_VERSION}"
            , description: 'JenkinsFile version for internal testing only'
            , name: 'SETUP_VERSION'
    )]

   // stuff
   myParameters << string(
        defaultValue: ''
        , description: 'some input'
        , name: 'MY_INPUT')
}

预期版本=“v1.1”
//检查设置:读取变量“setup\u VERSION”,并与代码中的常量进行比较
如果(“${SETUP\u VERSION}”!=“${EXPECTED\u VERSION}”){
//如果不同,请运行安装程序并停止生成
createSetup()
echo“安装程序已更新,请重新启动”
currentBuild.result='已中止'
}
//否则继续处理
...
//创建设置
void createSetup(){
def myParameters=[choice](
选项:“${EXPECTED_VERSION}”
,说明:'Jenkins文件版本仅用于内部测试'
,名称:'安装程序\u版本'
)]
//东西

myParametersJenkins作业或管道输入在作业真正开始之前显示。
我也面临同样的要求,最后完成了一项更新自身参数设置并要求重新运行的工作

即:

  • 检查作业设置是否正常
    • 如果不正常,则创建并用“取消”更新作业状态,并向用户提供消息或说明
    • 作业正常,这意味着用户在此阶段已经提供了参数
编辑

示例代码:


EXPECTED_VERSION = "v1.1"

// check setup : read variable "SETUP_VERSION" and compare with constant in code
if ( "${SETUP_VERSION}" != "${EXPECTED_VERSION}" ) {
  // if different, run setup and stop build
  createSetup()
  echo "Setup updated, please restar"
  currentBuild.result = 'ABORTED'
}
// else continue processing
...

// create setup
void createSetup() {

    def myParameters = [choice(
            choices: "${EXPECTED_VERSION}"
            , description: 'JenkinsFile version for internal testing only'
            , name: 'SETUP_VERSION'
    )]

   // stuff
   myParameters << string(
        defaultValue: ''
        , description: 'some input'
        , name: 'MY_INPUT')
}

预期版本=“v1.1”
//检查设置:读取变量“setup\u VERSION”,并与代码中的常量进行比较
如果(“${SETUP\u VERSION}”!=“${EXPECTED\u VERSION}”){
//如果不同,请运行安装程序并停止生成
createSetup()
echo“安装程序已更新,请重新启动”
currentBuild.result='已中止'
}
//否则继续处理
...
//创建设置
void createSetup(){
def myParameters=[choice](
选项:“${EXPECTED_VERSION}”
,说明:'Jenkins文件版本仅用于内部测试'
,名称:'安装程序\u版本'
)]
//东西

myParameters Thanks Grunnpi供您在帖子上发表评论。答案仍在我的版块上。请您用一些代码片段或参考文档进行解释好吗?用最少的代码更新了答案。您应该调整“刷新设置”条件,以便将当前设置与预期设置进行比较(我取决于版本号)Thanks Grunnpi感谢您对这篇文章的评论。答案仍在我的讨论板上。您能用一些代码片段或参考文档进行解释吗?用最少的代码更新了答案。您应该调整“刷新设置”条件,以便将当前设置与预期设置进行比较(我取决于版本号)