如何从 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 的更多信息。
在 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 的更多信息。