我希望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。任何帮助或替代解决方案将不胜感激。
答案 0 :(得分:3)
您可以尝试使用pre-scm-buildstep plugin。
使用此插件,您可以使用shell / batch脚本来收集信息并将它们存储在属性文件中。 接下来,InjectEnv插件将读取属性文件并设置变量:
接下来,在日志中,我们可以看到在SVN结账之前执行了这两个步骤:
SVN结帐后,该变量可用于构建步骤:
答案 1 :(得分:2)
接受的答案不适用于SCM轮询。我在Perforce插件+ EnvInject ver 1.92上遇到了类似的问题。在SCM轮询之前,注入的变量不会被扩展(即使它们在源同步之前被扩展)。另见bug JENKINS-16992
我的解决方法是安装Hidden Parameter Plugin并将变量定义为“隐藏参数”。对于简单的静态环境,我总是更喜欢EnvInject这个技巧。变量。它在配置上占用的空间更少。页面,工作更可靠