我已经从gitlab设置了一个webhook来启动基于标签推送事件的jenkins工作 . 可能是合并或提交,但开发人员想要使用标记 . 没问题,它运作正常 . 这个工作得到了标记提交的哈希值,我已经验证了它也有效 . 这项工作然后开始另一个运行ansible playbook的工作,并开始构建 .
所以我试图将git commit hash作为ansible extra_var传递,并通过execute shell命令将hash写入构建步骤中的文件 . 我正在使用后期构建操作来触发下游作业,我正在使用此属性文件中的参数 .
控制台输出验证了这一点,我看到提交哈希回显了 . 属性文件包含:
GIT_KEY=3432134325e4323423 (fake sample hash provided)
问题在于下游作业,当我尝试将GIT_KEY作为额外的var传递时,所以ansible playbook将获取正确的git commit . 我收到以下错误:
/usr/bin/git checkout --force ${GIT_KEY}", "failed": true, "msg": "Failed to checkout ${GIT_KEY}"
我已经测试了这个静态设置额外的vars值,并且它有效,所以我知道该剧本有效 . 它只是没有插入我正确传递给它的变量,或者正如我所期望的那样 .
有谁知道如何将一个jenkins参数作为extra_var传递给ansible?
2 回答
假设您正在传递
GIT_KEY
,如下所示:在你的剧本中,你用
{{ GIT_KEY }}
和{{ JENKINS_BUILD_NUMBER }}
引用额外的变量我无法使用paramterized构建插件 . 但我得到了解决方法,我使用下游作业中的injectEnv插件来读取文件中的KEY:Value,然后我可以将其作为额外的var传递,并且ansible看到了值 .