mercurial - 在 Jenkins 中推广构建时,如何在 Mercurial 中标记特定修订版?

标签 mercurial jenkins

我有一个带有升级构建插件和 Mercurial 插件的 Jenkins CI 服务器。当构建升级时,我想做的是标记 Mercurial 中与该构建相对应的修订版。

Mercurial 插件公开一个名为 MERCURIAL_REVISION_NUMBER 的环境变量,该变量会在构建运行时填充,但不会在升级运行时填充。因此,当我尝试在促销中的“执行 Windows 批处理命令”步骤中执行以下操作时:

hg tag --rev %MERCURIAL_REVISION_NUMBER% "升级-%PROMOTED_NUMBER%-%PROMOTED_ID%"

它失败,因为 %MERCURIAL_REVISION_NUMBER% 计算结果为空字符串,因此没有为 --rev 参数提供任何值。

我确实注意到 Mercurial 修订版本保存在每个构建的 build.xml 文件中。我想知道是否有一种简单的方法可以在我的促销步骤中实现它。

最佳答案

build.xml 必须是您的 Jenkins 脚本正在创建的内容——Mercurial 不是。

您的 Mercurial 命令看起来不错。

一种选择是将构建信息作为 jenkins 脚本的一部分放入文件中:

hg id > $WORKSPACE/built-version

然后将 built-version 包含为构建的工件之一。那么您的促销脚本可以执行以下操作:

hg tag --rev $(< built-version) "Promoted-${PROMOTED_NUMBER}-${PROMOTED_ID}"

或者任何 Windows 上的等价物。

关于mercurial - 在 Jenkins 中推广构建时,如何在 Mercurial 中标记特定修订版?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15147427/

相关文章:

mercurial - Mercurial 存储库内的 hgrc 文件是否由存储库本身跟踪?

build - Jenkins Partial Build/Modular Build on Commit Hook

windows - 我如何在 Mercurial 中使用 hg push

linux - 如何在不使用 "yum"命令的情况下在我的 Red Hat Linux 机器上安装 Mercurial?

java - 在 Jenkins 中运行 Maven 时出现 ClassNotFoundException

java - 如何在 jenkins 上访问 com.sun.management.ThreadMXBean 的 ThreadMx,junit 测试

Jenkins Kubernetes 插件 - sshagent 到 git 克隆 terraform 模块

ios - 通过命令行运行单元测试 - Swift Project with cocoaPods

mercurial - 检索从我的第二台机器推送的远程 mercurial 更新的正确命令

windows - 用于将更改拉到多个存储库的 mercurial windows 批处理文件