【问题标题】:How to retrieve Git commit id and message in VSTS/TFS build?如何在 VSTS/TFS 构建中检索 Git 提交 ID 和消息?
【发布时间】:2016-07-05 09:12:16
【问题描述】:

我在使用 VSTS 的 CI 环境中,我想获取提交注释以将他设置为文本文件。

这是我的构建步骤:

这个想法是将 GIT 提交注释复制到存储在工件文件夹中的文本文件中。然后使用 HockeyApp SDK,我将在 relase note 中设置我的提交评论。

我可以通过命令行操作轻松复制文件,但我不知道如何检索评论。

【问题讨论】:

    标签: git continuous-integration azure-devops hockeyapp


    【解决方案1】:

    环境变量$(Build.SOURCEVERSIONMESSAGE) 在构建期间设置。您可以直接在任务输入中使用$(build.SOURCEVERSIONMESSAGE) 访问它。

    如果您想在 powershell 脚本或内联 powershell 脚本中访问它。您可以通过环境变量访问它,即Get-Item Env:\BUILD_SOURCEVERSIONMESSAGE

    以下脚本将在二进制文件夹中创建一个新文件 commit.txt,其中包含提交消息。使用具有内联类型的 Powershell 任务运行脚本。

    $message = (Get-Item Env:\BUILD_SOURCEVERSIONMESSAGE)
    
    $path =  (Get-Item Env:\BUILD_BINARIESDIRECTORY).Value + '\commit.txt'
    
    echo $message > $path
    

    【讨论】:

    • 根据您的示例,我尝试使用命令行。工具 = echo。参数 = "$(Build.SOURCEVERSIONMESSAGE)" > "$(build.binariesdirectory)\$(BuildConfiguration)\drop\commitComment.txt"。我收到以下错误:[warning]File name doesn't indicate a full path to a executable file.
    • 我不认为它会那样工作。 BuildConfiguration 变量不可用。让我制定一个有效的例子。
    • @XavierW。在适用于 VSTS 的答案中添加了示例。让我知道它是否有效。
    • 完美。我在消息中添加.Value 并设置这样的路径:$path = (Get-Item Env:\BUILD_BINARIESDIRECTORY).Value + '\Release\commit.txt'。谢谢!
    • 这可行,但只检索最后一次提交的消息。如果你按 e。 G。 3 次提交,触发了一个新的构建,你如何访问所有这些?在德语版本中,这显示为“Zugeordnete Änderungen”,可能类似于构建摘要页面上的“相关更改”。是否可以访问该信息?
    【解决方案2】:

    以下命令将显示最新的提交 ID 和提交信息:

    git log --pretty=oneline | head -1
    

    【讨论】:

    • 这其实是最简单的答案。在我的情况下,缺少 Build.SOURCEVERSIONMESSAGE 所以我只使用了“git log head -1”
    • 这取决于操作系统,您可以使用它来代替:git log -1 --pretty=oneline
    【解决方案3】:

    您可以在构建定义中创建一个 power-shell 脚本任务来获取提交注释并将其写入文本文件,通过Rest API

    【讨论】:

    • 我在 Power-shell 方面不是很好。您是否有关于 Power-shell 和 VSTS 协同工作的示例或文章?
    猜你喜欢
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 2020-09-27
    相关资源
    最近更新 更多