仅将更改的文件/文件推送到artifactory

时间:2017-08-23 19:32:35

标签: bash shell artifactory

我目前的项目有这样的结构:

my_libraries
-Library1
 -Library1.csproj
-Library2
 -Library2.csproj
-Library3
 -Library3.csproj
-Library4
 -Library4.csproj
.... and several more

多人对这些库进行更改。 my_libraries被检入git。即使一个项目被更改,所有库也必须被推送到我们的神器服务器。我运行一个bash脚本,遍历每个文件夹并将.csproj文件转换为Nuget包。

我只想将更改后的项目推送到工件,而不是每次都推送。

从我的研究中,我正在考虑检查该文件的内容是否从上次改变,然后将其转换为Nuget包。我怎样才能在bash脚本中进行检查?这甚至是一个好方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Artifactory的Deploy Artifact by Checksum REST API 这是一种乐观的做法。您首先计算文件的校验和并调用此API而不发送文件的内容。只有当它返回404时,您才会使用简单的Deploy Artifact API。

修改
解释 -
Artifactory使用工件的校验和(即其sha1或sha256)仅在其二进制存储中存储一次内容。使用校验和部署是尝试使用此功能。您向Artifactory发送了目标路径以及您希望内容具有的校验和。如果已存在具有该校验和的工件,则将创建目标路径并指向该校验和。最终结果是您拥有包含内容的目标路径,而无需发送内容 如果没有其他具有相同校验和的工件,Artifactory将以404响应。这意味着您需要上传内容。所以你需要发出另一个请求,但现在也发送内容 如果您的用例是大多数工件不会更改,这是加快流程和减少网络使用的好方法。

HTH,
Yinon