【问题标题】:Setting TeamCity job build number using Maven exec:exec使用 Maven exec:exec 设置 TeamCity 作业内部版本号
【发布时间】:2018-05-01 02:51:24
【问题描述】:

在 TeamCity 工作中,我尝试从根 pom.xml 读取 Maven 项目版本,例如1.0.0-SNAPSHOT 并将内部版本号更改为1.0.0-N,其中N%build.counter% 的值。目标是用构建标识符替换 SNAPSHOT

到目前为止,我尝试将build-helper:parse-versionexec:exec结合起来调用echo在构建日志中写入##teamcity[buildNumber '1.0.0-1']并更改构建号。

在我的工作站上,我可以执行以下 Maven 命令以在命令行中打印##teamcity 指令:

mvn build-helper:parse-version exec:exec \ 
  -Dexec.executable="echo" \
  -Dexec.args="##teamcity[buildNumber '${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-%build.counter%']"

但是,当我在 TeamCity 构建中定义 Maven 步骤时,TeamCity 会直接从构建日志中打印的 Maven 命令行调用解析 ##teamcity 指令,从而导致以下 Maven 调用:

mvn build-helper:parse-version exec:exec \ 
  -Dexec.executable="echo" \
  -Dexec.args="" 

以下由 TeamCity 完成:

##teamcity[buildNumber '${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-11']

有没有办法在 Maven 命令行调用中转义包含 ##teamcity 的参数,以便 TeamCity 在 Maven 调用期间忽略它,但将其传递给 exec:exec Maven 目标以便它可以输出:

##teamcity[buildNumber '1.0.0-11']

如果有更简单的方法可以使用 TeamCity 构建步骤实现我的目标,并且无需修改项目的 pom.xml,请告诉我。我必须为此使用 PowerShell 或 Batch 脚本吗?

【问题讨论】:

    标签: windows maven teamcity


    【解决方案1】:

    有趣的用例。我尝试对此进行试验并得到了积极的结果。 echo 命令在最终输出中省略了单引号,因此我从未设法让 TeamCity 使用服务消息。

    我没有调用 Maven 构建步骤,而是定义了启动脚本的命令行构建步骤。脚本任务是生成所需的输出:

    ##teamcity[buildNumber '1.0.0-61']
    

    脚本本身真的很丑,但有点工作。也许你可以想出更优雅的解决方案:

    #!/bin/bash
    export ARGUMENTS="teamcity[buildNumber 'Q\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.
    mvn build-helper:parse-version exec:exec -Dexec.executable="echo" -Dexec.args="$ARGUMENTS" |  grep teamcity | sed "s/Q/\'/g" | awk '{print "##"$0}'
    

    由于某种原因,如果我将 ## 放入初始字符串并且在命令序列的末尾没有使用 awk,那么它不起作用,我最终得到了类似 '1.0.0-? ??',因此最后加上了 awk。

    希望这会有所帮助。

    【讨论】:

    • 我自己最终得到了一个 PowerShell 脚本,它在调用时显然不会在 TeamCity 构建日志中输出 ###teamcity。我仍然不知道如何在步骤调用参数中转义 TeamCity 服务消息:(
    猜你喜欢
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 2015-10-06
    • 2013-03-18
    • 2023-03-11
    相关资源
    最近更新 更多