如何从Artifactory下载标记为依赖项的文件
在ProjectA的构建结束时,使用如下jfrog CLI命令将工件上载到Artifactory:如何从Artifactory下载标记为依赖项的文件,artifactory,Artifactory,在ProjectA的构建结束时,使用如下jfrog CLI命令将工件上载到Artifactory: jfrog rt upload --build-name projectA --build-number 123 <artifacts-pattern> my-repo/ProjectA/123/ 稍后我将构建ProjectB,为此我需要下载ProjectA的工件。我再次使用--build name和--build number参数,这次将下载的工件标记为projectB构建的依赖项
jfrog rt upload --build-name projectA --build-number 123 <artifacts-pattern> my-repo/ProjectA/123/
稍后我将构建ProjectB,为此我需要下载ProjectA的工件。我再次使用--build name
和--build number
参数,这次将下载的工件标记为projectB构建的依赖项。(最初我希望这些参数选择要下载的构建,但这是一个误解。它们只收集正在进行的构建的构建信息。)
然后,当ProjectB构建完成时,我还上传创建的工件
jfrog rt upload --build-name projectB --build-number 456 <artifacts-pattern> my-repo/ProjectB/456/
如果我现在检查一下projectB构建编号456的构建信息JSON,我可以看到我为projectB本身上传的工件,以及从ProjectA下载的依赖项都记录了它们的散列和文件名。到目前为止还不错
现在的问题是,我正在寻找一个命令来下载ProjectA工件,这些工件是ProjectB构建的依赖项。我尝试使用此文件规范:
{
"files":
[
{
"pattern": "my-repo/projectA/*",
"build": "projectB",
"target": "./artifactory-tmp/"
}
]
}
然而,这似乎开始下载所有projectA版本,而不仅仅是与最新ProjectB版本关联的文件。如何获取这些依赖项?我不确定projectA的依赖项与projectB的关联(如果只是通过构建信息或特定部分或添加了其他属性),但是如果您希望在要下载的工件上获得更大的灵活性,可以尝试使用 您可以指定要下载哪些工件、从哪个构建id和编号以及此依赖关系是否在特定模块中使用。 如果这些依赖项具有公共属性,您也可以尝试根据这些条件下载
AQL当然也可以与文件规范结合使用。JFrog CLI支持聚合已发布的版本。要下载构建的工件,请运行
jfrogrtdl--build=/
。如果构建具有聚合构建,那么聚合构建的工件也将被下载
在您的情况下,在发布projectB之前运行jfrog rt build append projectB 456 projectA 123
命令将projectA添加为projectB的一个模块
以下是您的操作方法:
# 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及更高版本支持此功能
jfrog rt build-publish projectB 456
{
"files":
[
{
"pattern": "my-repo/projectA/*",
"build": "projectB",
"target": "./artifactory-tmp/"
}
]
}
# 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