如何从 Artifactory 下载标记为依赖项的文件

How to download files that were marked as dependencies from Artifactory

在 ProjectA 构建结束时,使用 jfrog CLI 命令将工件上传到 Artifactory,如下所示:

jfrog rt upload --build-name projectA --build-number 123 <artifacts-pattern> my-repo/ProjectA/123/

然后发布该版本:

jfrog rt build-publish projectA 123

稍后我构建了 ProjectB,为此我需要下载 ProjectA 的工件。我再次使用 --build-name--build-number 参数,这次将下载的工件标记为 projectB 构建的依赖项。 (最初我希望 select 构建下载这些参数,但这是一个误解。他们只收集正在进行的构建的构建信息。)

jfrog rt download --build-name projectB --build-number 456 my-repo/ProjectA/123/*

然后当 ProjectB 构建完成时,我还上传创建的工件

jfrog rt upload --build-name projectB --build-number 456 <artifacts-pattern> my-repo/ProjectB/456/

并同时发布该构建:

jfrog rt build-publish projectB 456

如果我现在检查 projectB 内部版本号 456 的构建信息 JSON,我可以看到我为 ProjectB 本身上传的工件以及从 ProjectA 下载的依赖项都已记录在他们的哈希和文件名。到目前为止一切顺利。

现在的问题是我正在寻找一个命令来下载作为 ProjectB 构建的依赖项的 ProjectA 工件。我尝试使用此文件规范:

{
    "files": 
    [
        {
            "pattern": "my-repo/projectA/*",
            "build": "projectB",
            "target": "./artifactory-tmp/"
        }
    ]
}

但是,这似乎开始下载所有 projectA 构建,而不仅仅是与最新的 ProjectB 构建关联的文件。我如何获得这些依赖项?

我不确定 projectA 的依赖项如何与 projectB 相关联(如果它只是通过构建信息或特定部分或者还添加了其他属性),但如果您正在寻找更灵活的工件下载你可以尝试使用 AQL

您可以指定要下载哪些工件、从哪个构建 ID 和编号以及是否在特定模块中使用此依赖项。 如果这些依赖项具有共同的属性,您也可以尝试根据这些条件进行下载。

当然,AQL 也可以与文件规范结合使用。

JFrog CLI 支持聚合已发布的构建。要下载构建的工件,运行 jfrog rt dl --build=<buildName>/<buildNumber>。如果构建有聚合构建,聚合构建的工件也将被下载。

在您的情况下,运行在发布项目 B 之前执行 jfrog rt build-append projectB 456 projectA 123 命令,会将项目 A 添加为项目 B 的模块。

这里是你如何做到的:

# Create and publish "projectA/123"
jfrog rt upload foo.zip generic-local --build-name projectA --build-number 1
jfrog rt build-publish projectA 123

# Create build "projectB/456"
jfrog rt upload bar.zip generic-local --build-name projectB --build-number 456

# Append published build "projectA/123" to build "projectB/456"
jfrog rt build-append projectB 456 projectA 123

# Publish "projectB/456"
jfrog rt build-publish projectB 456

# Download foo.zip and bar.zip
jfrog rt download --build=projectB/456
  • JFrog CLI 1.45.0 及更高版本支持此功能。

Aggregating Published Builds 下的文档中阅读有关 build-append 的更多信息。