Jenkins EnvInject在SVN之前

时间:2015-12-02 22:39:56

标签: svn jenkins build jenkins-plugins

我希望Jenkins通过在SVN结帐之前设置env var来构建最新的标记/分支。我尝试使用EnvInject,但似乎在结账前没有评估。

我检查了Prepare an environment for run并将Properties Content设置为

SVN_V=`svn ls -v <url> | ...`
echo SVN_V=$SVN_V > build.properties

然后我检查了Inject environment variables to the build process并将Properties File Path设为build.properties。我Repository url等于<url>/branch/$SVN_V

EnvInject Page有相互矛盾的陈述说&#34;在运行SCM结账之前或之后注入环境变量&#34;是一个功能,但后来进一步下来表示它不受已知限制。

运行EnvInject 1.92.1和Jenkins 1.639。任何帮助或替代解决方案将不胜感激。

2 个答案:

答案 0 :(得分:3)

您可以尝试使用pre-scm-buildstep plugin

使用此插件,您可以使用shell / batch脚本来收集信息并将它们存储在属性文件中。 接下来,InjectEnv插件将读取属性文件并设置变量:

enter image description here

接下来,在日志中,我们可以看到在SVN结账之前执行了这两个步骤:

enter image description here

SVN结帐后,该变量可用于构建步骤:

enter image description here

enter image description here

答案 1 :(得分:2)

接受的答案不适用于SCM轮询。我在Perforce插件+ EnvInject ver 1.92上遇到了类似的问题。在SCM轮询之前,注入的变量不会被扩展(即使它们在源同步之前被扩展)。另见bug JENKINS-16992

我的解决方法是安装Hidden Parameter Plugin并将变量定义为“隐藏参数”。对于简单的静态环境,我总是更喜欢EnvInject这个技巧。变量。它在配置上占用的空间更少。页面,工作更可靠