当前位置: 首页 > 面试题库 >

詹金斯:如何使用参数化触发器插件并通过Subversion修订版?

胡昊
2023-03-14
问题内容

IMO,确实需要在插件的网页/文档中明确说明此用例。

假设我有一个名为U的项目,上游。当U完成构建后,我希望D签出与U刚刚构建的版本相同的修订。U将始终结帐HEAD。

这是我所做的:

  1. 在U中,我为“在其他项目上触发参数化的构建”添加了“构建后操作”。
  2. 对于“要构建的项目”,我输入D并仅在“稳定”时构建。
  3. 我为“ Subversion修订版”添加了一个触发器。
  4. 我保存了此配置

现在,我不知道下一步该怎么做,但是我没有任何 反馈
来表明这是可行的。实际上,即使这个提交给插件源的测试用例也表明这是我应该做的。

但是,如果我猜到了,我认为应该将U标记为参数化的版本并为其添加参数。该参数应命名为U发送给D的名称。但是,如果我有正确的主意,则不知道该为该参数命名的内容。D的控制台日志或U的控制台日志都未提及任何新参数。

我猜了一下,并在U中创建了一个名为“
SVN_REVISION”的String参数,并将其默认设置为-1,但这没有任何效果。每次D触发构建时,SVN_REVISION默认为-1。

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

+ 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中“存储库URL”的描述:

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

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

让我问一个问题,我接下来可能要问。知道需要使用的参数名称后,如何修改D的配置以使它签出该修订版?我是否要修改“存储库URL”以@${PARAMETER_NAME}在末尾加上?


问题答案:

事实证明,就像测试用例所说的那样,这就是我要做的。我通过提交给U进行测试,然后在构建时再次提交。D开始构建后,它将获取第一个提交,而不是最新的提交。这就是我测试它是否有效的方式。

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



 类似资料:
  • 问题内容: 我在使用Jenkins + Gerrit时遇到麻烦。 Gerrit和Git自己在罚款。访问似乎也可以。 这是我的问题。构建时(触发Gerrit或手动进行),日志输出为: 我被此消息所困扰,尝试使用空仓库,非空仓库以及是否有变更集“正在审核” 问题答案: 我曾经遇到过这个问题,我想我现在已经解决了,我指责Jenkins UI隐藏了一些必要的配置元素;) 这是修复之前我的Jenkins构建

  • 有人能告诉我如何设置jenkins以基于特定标记的git repo进行构建吗?我已经做了一些搜索,并试图设置一个工作来构建一个特定的标签,请参阅:Jenkins Git插件:如何构建特定的标签?但我只能从主分支获取最新的提交。 这是给詹金斯的2.54分。我在SCM下设置了以下内容。 我允许所有分支触发这项工作。我有一个用jenkins-test1标记的提交。0,当我从gitlab测试webhook

  • 我试图通过在提交钩子中使用这个URL来触发我的Jenkins项目 而且不会被触发。但当我在web浏览器中键入此URL时,它会触发我的生成。 当我在命令提示符下尝试时,出现了一个错误 错误404 谁能告诉我我做错了什么??

  • 问题内容: 我想在不同的机器上使用相同的作业。但是我不想每次都更改作业的配置。我可以通过机器名称标签作为参数并在另一台机器上运行作业吗?(不同时)。 我想在将作业运行到我在配置中编写的脚本(批处理脚本)时传递参数。我们能做到吗? 我可以从工作中获得返回值并在下一个工作中使用它吗? 问题答案: 是的,您可以使用NodeLabel Parameter Plugin传递节点标签参数。 是的,您可以按照描

  • 问题内容: 在同一个SVN信息库中,我们有一个包含几个子项目的项目。例如: Jenkins是否可以在构建步骤中创建条件触发器? 我将澄清:仅在更改了SVN树的情况下,我才想执行Maven构建步骤。 例如,svn:// ip / svn / trunk / subproject1树已更改。在这种情况下,应触发整个构建。 然后,(由于svn:// ip / svn / trunk / subproje

  • 问题内容: 我有一个svn位置很少的jenkins项目。使用scm集成时,如何使它们全部签出相同的修订版? 问题答案: 据我了解您的问题,您可以使用@ Revision-syntax。 句法: 范例1: 上面的例子将检出的修订版1234。