You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Artifactory AQL返回非200状态时如何终止流水线?

AQL语法修正

你当前使用的AQL存在一处语法错误:{"name":{"$nmatch":"*-sample.*"}} 后多余的逗号会导致Artifactory返回400错误,修正后AQL如下:

{
    "files": [{
        "aql": { "items.find" : {
                "$or": [
                    {
                        "$and": [
                            {"repo": "generic-temp"},
                            {"created": {"$before": "25days"} }
                        ]
                    },
                    {
                        "$and": [
                            {"repo": "generic-temp"},
                            {
                                "$and": [
                                    {"name":{"$nmatch":"*-test"}},
                                    {"name":{"$nmatch":"*-sample.*"}}
                                ]
                            }
                        ]
                    }
                ]
    }}]}
流水线控制逻辑实现

核心要做两层校验:请求状态码校验 + 响应体格式校验,任意一层不满足直接返回非0退出码,即可触发流水线中断。

通用Shell实现(适配绝大多数流水线)

依赖curl和jq工具,无需额外配置,直接嵌入流水线任务中即可:

# 替换为你的Artifactory认证信息和地址
ARTIFACTORY_USER="你的用户名"
ARTIFACTORY_PWD="你的密码/API密钥"
ARTIFACTORY_URL="https://你的Artifactory域名/artifactory"

# 发起AQL请求,-f参数会让curl在收到非2xx/3xx响应时直接返回非0退出码
RESPONSE=$(curl -s -f -u "${ARTIFACTORY_USER}:${ARTIFACTORY_PWD}" \
  -X POST \
  -H "Content-Type: text/plain" \
  "${ARTIFACTORY_URL}/api/search/aql" \
  --data-binary @<替换为你的AQL文件路径>)

# 第一层校验:判断请求是否返回非200状态
if [ $? -ne 0 ]; then
  echo "AQL请求失败,返回非200状态码"
  exit 1
fi

# 第二层校验:判断响应格式和执行结果是否符合要求
echo "${RESPONSE}" | jq -e '.status == "success" and .totals.failure == 0' > /dev/null
if [ $? -ne 0 ]; then
  echo "清理任务执行失败,或响应格式不符合要求"
  exit 1
fi

echo "清理任务执行成功"

特定流水线适配说明

  • Jenkins流水线:直接把上述脚本放到sh块中即可,Jenkins会自动识别非0退出码标记阶段失败
  • GitLab CI/GitHub Actions:将上述脚本写入step的run字段即可,同样会自动触发流水线中断
  • 如果你使用JFrog CLI操作:添加--fail-fast参数,CLI会在请求失败时自动返回非0退出码,再配合jq做响应校验即可

内容的提问来源于stack exchange,提问作者hammer89

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:27:01