Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将参数中的变量插入Jenkins中的参数化构建_Jenkins_Jenkins Pipeline_Jenkins Plugins_Jenkins Groovy - Fatal编程技术网

将参数中的变量插入Jenkins中的参数化构建

将参数中的变量插入Jenkins中的参数化构建,jenkins,jenkins-pipeline,jenkins-plugins,jenkins-groovy,Jenkins,Jenkins Pipeline,Jenkins Plugins,Jenkins Groovy,使用构建参数分支执行Jenkins作业。当作业手动运行时,用户可以从列表中选择要部署的分支。git插件提供的列表 但是这个作业也可以被GitLab钩子调用。在这种情况下,参数将具有默认值,因为未收到任何输入 是否有办法使参数分支包含相关信息?分支名称来自GitLab hook 另外,我认为可以将默认值设置为${BRANCH\u FROM\u HOOK?:default\u value}它将检查BRANCH\u FROM\u HOOK变量是否存在。只需找到一种方法,如何从钩子中输入分支变量,分支值

使用构建参数
分支
执行Jenkins作业。当作业手动运行时,用户可以从列表中选择要部署的分支。git插件提供的列表

但是这个作业也可以被GitLab钩子调用。在这种情况下,参数将具有默认值,因为未收到任何输入

是否有办法使参数
分支
包含相关信息?分支名称来自GitLab hook

另外,我认为可以将默认值设置为
${BRANCH\u FROM\u HOOK?:default\u value}
它将检查
BRANCH\u FROM\u HOOK
变量是否存在。只需找到一种方法,如何从钩子中输入分支变量,分支值来自钩子。现在,我将接收钩子的gitlab插件设置为钩子所在分支的
gitlab.Branch

更新: 我为实现这一目标所做的工作:

  • 指定git参数:
gitParameter默认值:“${env.gitlabBranch?:“origin/master”}”
但是没有,因为在构建开始步骤中没有设置
gitlabBranch

  • 按照gitlab插件页面上的建议设置作业参数:

    • 保留Jenkins环境变量
    • 保持Jenkins构建变量
    • 覆盖生成参数
  • 添加到“Groovy脚本”部分:

在此之后添加参数:

git参数名称:分支,默认值:“${env.gitlabBranch?:“origin/master”}”

要匹配文档中所述的
map['branch']
,请尝试以下操作:

gitParameter默认值:“${branch?:“origin/master”}”
-也不工作

未工作意味着请参见来自gitlab钩子的实际分支的intead的
origin/master

我错在哪里?

答案是使用,而不是GitLab。并使用其功能将其变量映射到作业参数:

如果您的作业是参数化的,并且您解析的变量具有 与这些参数同名,则插件将填充 触发作业时的参数。这意味着您可以,例如,使用 参数与SCM插件(如GIT插件)结合使用 挑一根树枝


结束。)

这绝对是可能的。你能给我看一下你试过的吗?刚刚更新了我的问题。这是您询问的问题吗?这是一个脚本化管道?相关的环境变量
env.BRANCH\u NAME
在声明性管道中不直接可用。可能会有帮助;它用于将脚本嵌入到声明式中。谢谢,但我需要在构建开始之前插入变量。在用户输入生成参数的步骤上。通过您的链接,在构建启动后会有一个操作,我会从SCM进行签出,等等。但是我的参数化作业可以由GitLab钩子调用。我需要将来自GitLab钩子的变量插入到job-BRANCH的一个参数中。
import hudson.model.*
def env = Thread.currentThread()?.executable.parent.builds[0].properties.get('envVars')
def map = [:]

if (env['gitlabBranch'] != null) {
    map['branch'] = env['gitlabBranch'] 
}
return map