如何通过jfrog-cli仅从GitHub主分支下载最新Artifactory工件?
解决方法
有两种可靠的方式实现只拉取主分支的最新工件,核心是通过构建属性过滤或路径定向筛选精准定位主分支构建:
方法1:基于构建属性筛选(推荐)
这种方式需要在上传主分支构建到Artifactory时,给构建打上专属属性标记,后续下载时通过该属性过滤。
步骤1:上传主分支构建时添加属性
在你的CI/CD流程(比如GitHub Actions)中,主分支构建完成后上传到Artifactory时,添加branch=main属性:
# 替换${BUILD_NUMBER}为你的构建编号(比如GitHub Actions的${{ github.run_number }}) jf rt build-publish "Action Name" ${BUILD_NUMBER} --props "branch=main"
步骤2:下载时过滤主分支构建
先查询主分支的最新构建编号,再用该编号下载对应工件:
# 获取主分支最新构建编号(需安装jq解析JSON输出) LATEST_MAIN_BUILD=$(jf rt build-info list --build-name "Action Name" --filter "branch=main" --sort-by created --sort-order desc --limit 1 --format json | jq -r '.[].number') # 下载该构建的工件 jf rt dl --build "Action Name/${LATEST_MAIN_BUILD}" --flat
如果你的构建本身已包含分支信息(比如通过GitHub Actions的GIT_BRANCH环境变量自动注入),可直接用--filter "GIT_BRANCH=main"替代branch=main,无需额外添加属性。
方法2:基于工件路径定向下载
如果主分支工件被上传到Artifactory的固定路径下(比如libs-release-local/your/project/path/main/),可直接通过路径筛选最新工件:
# 替换为你的工件存储路径,--limit 1确保只拉取最新的一个 jf rt dl "libs-release-local/your/project/path/main/*" --flat --sort-by created --sort-order desc --limit 1
这种方式无需依赖构建属性,但要求上传时严格区分分支路径。
内容的提问来源于stack exchange,提问作者Daan Timmer
相关产品推荐
相关产品推荐

