1

我在 Artifact Repository 中有一组 zip 文件,我需要获取最新的工件。文物的结构如下所示

Homeloan
-> test-application-dev-local_1.zip
-> test-application-dev-local_2.zip
-> test-application-dev-local_3.zip
-> test-application-dev-local_4.zip
-> test-application -dev-local_5.zip
-> test-application-dev-local_6.zip
-> test-application-dev-local_7.zip

所有这些人工制品都是 Msbuild 的输出。每次当用户签入他们的代码时,它都会在 TeamCity 中构建,并且人工制品会上传到 Jfrog。

现在我有另一个 TeamCity 构建,它是在需要获取最新人工制品的临时基础上触发的,在这种情况下,我需要“test-application-dev-local_7.zip”。

我正在使用 TeamcityArtifactory 插件来获取人工制品,以下是我尝试过的规范。

{
    "files": [{
        "aql": {
            "items.find": {
                "@build.name": "test-application-dev-local_*.zip"
            }
        },
        "target": "somepath",

    }]
}

通过上述规范,我得到了所有 7 个 zip 文件。我尝试在上述规范中添加限制(我不确定这是否是正确的方法)但我收到了错误

{
"files": [{
    "aql": {
        "items.find": {
            "@build.name": "test-application-dev-local_*.zip"
        }
    },
    "limit":1
    "target": "somepath",

}]

}

Error occurred while resolving dependencies from the spec: Unrecognized field "limit" (class org.jfrog.build.extractor.clientConfiguration.util.spec.Aql), not marked as ignorable (one known property: "items.find"])

我不确定如何检索最近上传的人工制品。

4

1 回答 1

0

正如 Artifactory文档所说,即使我也被困在这一点上-

“目前 TeamCity 不支持 sortBy、sortOrder、limit 和 offset。”

所以不得不四处寻找其他方法来实现这些。什么对我有用?

->

我可以通过JFrog CLI命令来做到这一点。

必须在命令行上重新创建规范文件并出于排序和限制目的,使用 CLI 命令而不是在规范文件中添加排序和限制。

echo ">>> Downloading the archive from artifactory ..."
echo "{" > downloadSpec.json
echo "  \"files\": [" >>downloadSpec.json
echo "    {" >> downloadSpec.json
echo "      \"pattern\": \"artifactory-repo-path/artifact-name*.tar.gz\"," >> downloadSpec.json
echo "      \"target\": \"target-path\-to-download"" >> downloadSpec.json
echo "    }" >> downloadSpec.json
echo "  ]" >> downloadSpec.json
echo "}" >> downloadSpec.json


jfrog rt dl --spec=downloadSpec.json
--url="your-artifactory-server-url" --user="your-artifactory-user-name" -- 
password="your-artifactory-password" --sort-by=updated --sort-order=desc 
--limit=1

其中jfrog rt dl-> 是要下载的命令

于 2021-09-07T05:27:21.007 回答