我有一个带有Promoted Builds插件和Mercurial插件的Jenkins CI服务器。在构建被提升时我想要做的是标记Mercurial中与该构建对应的修订。
Mercurial插件公开了一个名为MERCURIAL_REVISION_NUMBER的环境变量,它在构建运行时填充,但在运行时不会填充。因此,当我尝试在促销中的“执行Windows批处理命令”步骤中执行以下操作时:
hg tag --rev %MERCURIAL_REVISION_NUMBER% "Promoted-%PROMOTED_NUMBER%-%PROMOTED_ID%"
失败,因为%MERCURIAL_REVISION_NUMBER%计算为空字符串,因此没有为-rev参数提供值。
我注意到Mercurial修订版保存在每个版本的build.xml文件中。我想知道在推广步骤中是否有一种简单的方法可以实现它。
答案 0 :(得分:2)
那个build.xml必须是你的Jenkins脚本正在创建的东西 - Mercurial没有。
你的Mercurial命令看起来很好。
一种选择是将构建信息作为jenkins脚本的一部分放入文件中:
hg id > $WORKSPACE/built-version
然后包含built-version
作为构建的工件之一。然后您的宣传脚本可以:
hg tag --rev $(< built-version) "Promoted-${PROMOTED_NUMBER}-${PROMOTED_ID}"
或等同于此的窗口。
答案 1 :(得分:0)
我最终使用Powershell脚本执行此操作。这是我的第一个PS脚本,所以我肯定对任何建议的改进持开放态度。
# Read the appropriate Hg revision from build.xml and tag it
$filename = "..\builds\" + $env:PROMOTED_ID + "\build.xml"
[xml]$build = Get-content $filename
$hg = $build.SelectSingleNode("/build/actions/hudson.plugins.mercurial.MercurialTagAction")
write-host "Tagging revision: " + $hg.rev
hg tag --force --rev $hg.rev "Promoted-$env:PROMOTED_NUMBER-$env:PROMOTED_ID"
hg push --force