首页 > 解决方案 > 根据通配符条件从 Artifactory 动态下载文件

问题描述

我有一个循环可以将一个或多个文件上传到工件,如下所示:

    if [ "${consider_kinds}" = "all" ] || [ "${consider_kinds}" = "serviceaccounts" ]
            then
                    echo "Uploading source serviceaccounts"
                    cd "${HOME}"/sync-cluster/${consider_namespace}/serviceaccounts || exit
                    for file in *.yaml
                    do
                            if [ -e "$file" ]
                            then
                                    curl --user "${deploy_user}:${deploy_user_password}" -XPUT "https://testcompany.com.au/test-virtual-repo/sync-cluster/" -H "Content-Type: application/json" -T "${file}"
                                    break
                            fi
                    done
            fi

文件名将是这样的:

${BUILD_NUMBER}-${source_cluster}-${consider_namespace}-${resource}-${item}.yaml

示例文件名可能是这样的:

120-ntive-src-cluster-sit1-serviceaccounts-default-hssjjs.yaml
120-ntive-src-cluster-sit1-serviceaccounts-pod-labeller-abc.yaml

那么,如何列出远程文件(0 个或 1 个或更多)然后下载它们是我的问题?

如果它只是一个文件,我可以下载如下:

wget "https://testcompany.com.au/test-virtual-repo/sync-cluster/${BUILD_NUMBER}-${source_cluster}-${consider_namespace}.json"

我不知道如何动态下载它们!:(

标签: curlwgetartifactory

解决方案


这可以通过使用 JFrog CLI 和文件规范或 AQL 以及使用占位符轻松实现。JFrog CLI官方文档中有多个此类场景的示例。


推荐阅读