如何从git中读取文件并将其作为请求正文发布到API

我使用Azure Devops设置了CI / CD。 每当合并发生时,我都可以从git repo构建源代码,并将生成的构建推送到分发渠道。

对我来说,要求更像是,发生合并时,我想知道哪个文件已更改,我想知道文件的名称,我想复制文件的内容并将其作为请求发布API的有效负载主体。

所以我的疑问是?

  • 如何查找在合并中更改的文件的名称?

  • 如何从发生合并的git repo中读取特定文件的内容?

  • Azure devops是否有可用的预构建REST客户端插件来将有效负载发布到服务器?

  • 我可以编写一个shell脚本或执行所有这些操作的方法,但是如何找到使用最新源代码更改的文件呢? azure devops提供的任何特定API可以查找或仅查找文件的最后修改日期吗?

欢迎提出任何建议。

missel 回答:如何从git中读取文件并将其作为请求正文发布到API

您可以在powershell中使用run git命令来获取已更改文件的内容。 下面的命令列出了提交中所有更改的文件。选中此thread以获取更多信息

git diff-tree --no-commit-id --name-only -r $commitID

要显示文件内容,可以使用以下命令。请参阅此thread

git show ${commitId}:$file

azure管道中的整个powershell脚本示例如下:

Set-Location -Path "$(Build.Repository.LocalPath)"  #set working folder to git sources folder

$commit = "$(Build.SourceVersion)"  #get the commit hash

$files = git diff-tree --no-commit-id --name-only -r $commit  #list the changed files

ForEach($file in $files){

    $content = git show ${commit}:$file  #get the file content

    (Invoke-RestMethod ......) # you can then invoke your API To send the file content.

}

选中此site,以了解有关Azure管道中预定义变量的更多信息。

然后,您可以在构建管道中添加powershell任务以在脚本之上运行。

enter image description here

如果要使用webhook进行此操作。您可以参考this simple guide来了解如何创建自己的Webhook服务器。

本文链接:https://www.f2er.com/3111882.html

大家都在问