首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Jenkins:如何使用参数化触发器插件并传递subversion修订版?

Jenkins:如何使用参数化触发器插件并传递subversion修订版?
EN

Stack Overflow用户
提问于 2013-03-20 05:27:00
回答 2查看 28.9K关注 0票数 19

在我看来,这个用例确实需要在插件的网页/文档中明确说明。

假设我有一个项目,名为U代表上游,D代表下游。当U完成构建后,我希望D签出与U刚刚构建的版本相同的版本。您将始终检出头部。

下面是我所做的:

在U中,我为"Trigger parameterized build on

  1. “添加了"Post-build Actions”。
  2. 对于“要构建的项目”,我键入了D并仅在“稳定”时才进行构建。
  3. I为"Subversion revision“添加了触发器。
  4. I保存了此配置

现在我不知道我下一步应该做什么,但我没有得到任何反馈,表明这是有效的。事实上,even this testcase that's committed to the plugin source建议我应该做的就是这些。

但是,如果我要猜测,我会认为我应该将U标记为参数化构建,并向其添加参数。这个参数应该被命名为what U发送给D。但是,如果我没弄错的话,我不知道我应该怎么命名这个参数。无论是D的控制台日志还是U的控制台日志都没有提到任何新参数。

我猜测并在U中创建了一个名为"SVN_REVISION“的字符串参数,并将其缺省为-1,但这没有任何效果。每次D触发构建时,SVN_REVISION默认为-1。

这是在D项目上运行export的输出:

代码语言:javascript
复制
+ export
export BUILD_ID="2013-03-20_09-48-32"
export BUILD_NUMBER="4522"
export BUILD_TAG="jenkins-D-4522"
export BUILD_URL="http://my.jenkins.server.com:8081/job/D/4522/"
export EXECUTOR_NUMBER="2"
export HUDSON_COOKIE="8ec52f7a-d60d-4640-83a9-dbed7351b32a"
export HUDSON_HOME="/opt/hudson"
export HUDSON_SERVER_COOKIE="633967fcd1d6f7b38a85042ada5c3949"
export HUDSON_URL="http://my.jenkins.server.com:8081/"
export JAVA_HOME="/opt/java"
export JENKINS_HOME="/opt/hudson"
export JENKINS_SERVER_COOKIE="633967fcd1d6f7b38a85042ada5c3949"
export JENKINS_URL="http://my.jenkins.server.com:8081/"
export JOB_NAME="D"
export JOB_URL="http://my.jenkins.server.com:8081/job/D/"
export LANG="en_US.UTF-8"
export LD_LIBRARY_PATH="/opt/jdk1.6.0_30/jre/lib/i386/server:/opt/jdk1.6.0_30/jre/lib/i386:/opt/jdk1.6.0_30/jre/../lib/i386"
export M2="/opt/maven/bin"
export M2_HOME="/opt/maven"
export MAVEN_OPTS="-Xms256m -Xmx512m"
export NHINC_PROPERTIES_DIR="/opt/nhinc/Properties"
export NLSPATH="/usr/dt/lib/nls/msg/%L/%N.cat"
export NODE_LABELS="master"
export NODE_NAME="master"
export OLDPWD
export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/opt/java/bin:/opt/apache-ant-1.8.1/bin:/usr/local/bin:/opt/maven/bin"
export PWD="/opt/hudson/jobs/D/workspace"
export SHLVL="2"
export SVN_REVISION="24186"
export SVN_URL="https://a/url/trunk"
export TERM="xterm"
export WORKSPACE="/opt/hudson/jobs/D/workspace"
export XFILESEARCHPATH="/usr/dt/app-defaults/%L/Dt"
export _="/opt/java/bin/java"

所以它看起来像是有一个SVN_REVISION环境变量。但我不认为这一定来自插件。我的证据来自于jenkins中对"Repository URL“的描述:

在构建期间,如果您只签出一个模块,则可以通过环境变量SVN_REVISION获得签出的模块的修订号。如果您签出了多个模块,请使用svnversion命令。如果您签出了多个模块,可以使用svnversion命令获取修订信息,也可以使用SVN_REVISION_环境变量,其中是与配置的位置匹配的从1开始的索引。URL可以通过类似的SVN_URL_环境变量获得。

但让我们假设这是从U而不是D设置的,我如何让D使用它,或者当D被触发时,我如何知道它正在使用它?

让我问一个我接下来可能需要问的问题。一旦我知道了我需要使用的参数的名称,我如何修改D的配置,以便它检查该修订?我是不是要修改"Repository URL“,在最后加上一个@${PARAMETER_NAME}之类的东西?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-16 02:08:14

事实证明,like the test case says,这就是我要做的。我通过提交给U来测试这一点,然后在构建过程中再次提交。一旦D开始构建,它就抓住了第一个提交,而不是最新的提交。这就是我测试它工作的方式。

更好的反馈将不胜感激,但至少我知道它是有效的。

票数 3
EN

Stack Overflow用户

发布于 2013-03-20 15:41:42

我不知道为什么"Subversion revision“参数不起作用(参见下面的故障排除提示),但尝试在"Trigger parameterized build on other projects”下拉菜单中手动添加该参数。最简单的方法可能是添加“当前构建参数”。

你也可以只指定你想要的参数,用你想要的值和“预定义参数”,可能像这样:

代码语言:javascript
复制
SVN_REVISION=${SVN_REVISION}

没有必要将D标记为parameterized,这只是意味着您可以使用默认值指定参数,并使Jenkins在手动触发构建时要求提供参数。但是,任何安排新构建的东西(就像参数化触发器插件一样)总是可以向该构建添加任何参数,无论作业是如何配置的。

故障排除提示:添加一个构建步骤,在触发的构建中转储环境变量(它也应该具有所有的构建参数)。最简单的方法是使用命令添加"Execute shell"/"Execute Windows batch command“来转储环境(使用unix shell使用export,使用Windows使用set )。

然后,从构建控制台输出中,查看参数是否如它们应该的那样(存在并具有正确的值)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15510754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档