【问题标题】:How do I read a file from git and post that as a request body to an API如何从 git 读取文件并将其作为请求正文发布到 API
【发布时间】:2019-11-13 08:11:49
【问题描述】:

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

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

所以我的疑问是?

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

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

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

  • 我可以编写一个 shell 脚本或其他东西来完成所有这些工作,但是如何找到因最新源代码合并而更改的文件? azure devops 提供的任何特定 API 来查找或仅查找文件的最后修改日期?

欢迎提出任何建议。

【问题讨论】:

  • 对于您的大部分要求,如果您是管理员,则更容易完成。启用 webhook 和电子邮件通知后,您可以获得有关提交和合并的详细信息。但是我认为,如果特定的合并请求非常大(即作为合并请求的一部分进行的重大更改),则将已更改的文件内容作为请求有效负载发送可能是有害的
  • 顺便说一句,由于您使用的是 azure devops,我想知道您是否考虑过使用 azure 管道来完成最后一部分......只是我的两分钱
  • 我的两分钱 :) 很有礼貌 谢谢。任何合并都会使更改最小化。文件的新内容需要发布到一些 API tbh。这是我的要求。我已经在研究我的问题是如何知道最近的合并更改了哪个文件?

标签: git azure-devops continuous-integration continuous-deployment pull-request


【解决方案1】:

您可以在 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 任务以运行上述脚本。

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

【讨论】:

  • 感谢您的详细回答,让我检查此解决方案并回复您
  • Hi@Shiva 您有机会尝试上述答案吗?请让我知道进展如何?我们可以讨论它以制定更好的解决方案。
  • 您好,感谢您的支持 :),我会在这周查看并通知您。
  • 嗨@Shiva 有一段时间没有你的消息了,你可能已经尝试过上面的答案,我可以知道它是怎么回事吗?
  • 感谢您关注我!我很忙,所以没有时间。我会在下周有空的时候告诉你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 2018-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-19
相关资源
最近更新 更多