【问题标题】:Getting checksum of 'latest' artifact获取“最新”工件的校验和
【发布时间】:2017-03-16 00:47:32
【问题描述】:

我想从 Artifactory 中提取最新的包,但前提是它尚未下载。

我正在使用通用存储库,并且正在使用 PowerShell 下载最新的软件包,例如

Invoke-RestMethod -Uri "https://myArtifactoryUrl/artifactory/myrepo/folder/package/package-[RELEASE].zip" -Method Get -OutFile "C:\temp\package.zip" -Headers $Header

所以我想获取“最新”文件的校验和并将其与本地文件进行比较,而无需下载任何内容。如果有不同,我会下载它。

我的问题是我看不到(在 Artifactory API 中)如何仅在特定文件上获取 repo 中最新文件的校验和?

这个包可能非常大,所以我想避免不必要的下载。

我注意到 Artifactory CLI 会为您进行此校验和比较,但使用它有点麻烦(这是在云、公司网络中,用于 Windows 上的 puppet 模块)。我宁愿在 PS 中这样做

任何公牛都将不胜感激。我认为这应该不是特别困难,但也许这不是最好的方法?

【问题讨论】:

    标签: powershell artifactory


    【解决方案1】:

    您可以做的是发送 HEAD 请求,这样您实际上并没有下载文件。获取响应中的文件名后,您可以向 Artifactory 查询校验和并进行比较。 此外,在搜索最新的工件时,您会得到以下标题:

    服务器:Artifactory/4.13.0

    X-Artifactory-Id:27e2ee2e1ade8482:-7fa4c4b5:15ad2daab10:-8000

    最后修改时间:格林威治标准时间 2017 年 3 月 15 日星期三 16:44:59

    ETag:10d759d4a8a297bf5e28a6fc7eaf4b969d78a098

    X-Checksum-Sha1:10d759d4a8a297bf5e28a6fc7eaf4b969d78a098

    接受范围:字节

    X-校验和-Md5:e30227b29222ec6f007524d91829878a

    X-Artifactory-文件名:multi2-3.5-20170315.164450-2.jar

    Content-Disposition:附件;

    filename="multi2-3.5-20170315.164450-2.jar";

    文件名*=UTF-8''multi2-3.5-20170315.164450-2.jar

    内容类型:应用程序/java-archive

    内容长度:1022

    日期:格林威治标准时间 2017 年 3 月 15 日星期三 16:45:26

    这有帮助吗?

    【讨论】:

    • 宾果游戏,谢谢!使用 Head 方法以及切换到 Invoke-WebRequest 会返回我一直在寻找的校验和 :)
    • 什么是HEAD 请求?它是什么样子的?
    • @LeiYang Google: 1. HEAD 方法与 GET 相同,只是服务器不能在响应中返回消息体。响应 HEAD 请求的 HTTP 标头中包含的元信息应该与响应 GET 请求发送的信息相同。此方法可用于获取有关请求所隐含的实体的元信息,而无需传输实体主体本身。这种方法通常用于测试超文本链接的有效性、可访问性和最近的修改。 2.developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 2015-04-30
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    相关资源
    最近更新 更多