Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Artifactory下载标记为依赖项的文件_Artifactory - Fatal编程技术网

如何从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构建的依赖项

在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构建的依赖项。(最初我希望这些参数选择要下载的构建,但这是一个误解。它们只收集正在进行的构建的构建信息。)

然后,当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