如何在VSTS/TFS构建中检索Git提交id和消息?

如何在VSTS/TFS构建中检索Git提交id和消息?,git,continuous-integration,azure-devops,hockeyapp,Git,Continuous Integration,Azure Devops,Hockeyapp,我在一个使用VST的CI环境中,我想获得提交注释,将其设置为文本文件 以下是我的构建步骤: 其思想是将GIT提交注释复制到存储在工件文件夹中的文本文件中。然后使用hockeyappsdk,我将在relase注释中设置提交注释 我可以通过命令行操作轻松复制文件,但我不知道如何检索注释。您可以在生成定义中创建一个power shell脚本任务,以获取提交注释并通过将其写入文本文件。环境变量$(build.SOURCEVERSIONMESSAGE)在生成过程中设置。您可以直接在任务输入中使用$(bu

我在一个使用VST的CI环境中,我想获得提交注释,将其设置为文本文件

以下是我的构建步骤:

其思想是将GIT提交注释复制到存储在工件文件夹中的文本文件中。然后使用hockeyappsdk,我将在relase注释中设置提交注释


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

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

环境变量
$(build.SOURCEVERSIONMESSAGE)
在生成过程中设置。您可以直接在任务输入中使用
$(build.SOURCEVERSIONMESSAGE)
访问它

如果要在powershell脚本或内嵌powershell脚本中访问它。您可以通过环境变量访问它,即
Get Item Env:\BUILD\u SOURCEVERSIONMESSAGE

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

$message = (Get-Item Env:\BUILD_SOURCEVERSIONMESSAGE)

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

echo $message > $path

以下命令将显示最新的提交id和提交消息:

git log --pretty=oneline | head -1

我对Power shell不是很在行。您是否有一个例子或一篇文章谈到PowerShell和VST一起工作?根据您的例子,我尝试使用命令行。工具=
echo
。参数=
“$(Build.SOURCEVERSIONMESSAGE)”>“$(Build.binariesdirectory)\$(BuildConfiguration)\drop\commitComment.txt”
。我遇到以下错误:
[warning]文件名不表示可执行文件的完整路径。
我认为它不会这样工作。BuildConfiguration变量不可用。让我举一个有效的例子。@XavierW。在答案中添加了使用VST的示例。让我知道它是否有效。完美。我在消息中添加
.Value
,并将路径设置为:
$path=(获取项目环境:\BUILD\u BINARIESDIRECTORY).Value+'\Release\commit.txt'
。谢谢这可以工作,但只检索上次提交的消息。如果你按e。G3次提交,触发新的构建,您如何访问所有这些?在德语版本中,这显示为“ZugoredneteÄnderungen”,这可能类似于构建摘要页面上的“相关更改”。有可能获得这些信息吗?这实际上是最简单的答案。在我的例子中Build.SOURCEVERSIONMESSAGE丢失了,所以我只使用了“git log head-1”这取决于操作系统,您可以使用它:
git log-1--pretty=oneline