将参数中的变量插入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