Bitbucket Cloud Curl触发自定义流水线报错:yml不存在但实际存在
修正Bitbucket自定义流水线触发的Curl请求
问题根源分析
你的请求Payload存在两个关键问题,导致API返回错误:
- 无效的
WAIT顶级字段:Bitbucket Pipelines API的请求体中没有WAIT这个参数,该字段会破坏JSON格式合法性,导致API无法正确解析请求,进而误报找不到流水线配置文件。 - 自定义流水线选择器匹配问题:如果请求中
selector.pattern的值与bitbucket-pipelines.yml里自定义流水线的name不完全一致(包括大小写、空格、标点),API会无法定位到对应的流水线配置,同样会触发"yml not found"的错误。
修正后的Curl命令
curl -X POST -is -u "$BITBUCKET_USERNAME":"$BITBUCKET_APP_PASSWORD" \ --header 'Content-Type: application/json' \ https://api.bitbucket.org/2.0/repositories/<workspace>/<repository>/pipelines/ \ --data ' { "target": { "ref_type": "branch", "type": "pipeline_ref_target", "ref_name": "develop", "selector": { "type": "custom", "pattern": "Deploy to environment" } }, "variables": [ { "key": "NAMESPACE", "value": "xxx" }, { "key": "URL", "value": "https://api.xx.xxx.net/" }, { "key": "KID", "value": "xxxxx" } ] }'
关键验证步骤
- 移除
WAIT字段:该字段不属于Bitbucket Pipelines API的请求参数规范,必须删除。 - 核对流水线名称:打开仓库的
bitbucket-pipelines.yml,找到自定义流水线的name字段,确保和请求中selector.pattern的值完全一致。例如,如果yml中是:
那么请求中的pipelines: custom: Deploy to Environment: - step: script: - echo "Deploying"pattern必须改为"Deploy to Environment"。 - 确认分支配置:确保
develop分支的根目录下确实存在bitbucket-pipelines.yml,且该文件包含你要触发的自定义流水线配置。
内容的提问来源于stack exchange,提问作者bgarcial
相关产品推荐
相关产品推荐

