使用curl POST请求触发GitLab Pipeline时遭遇404 Not Found错误
解决GitLab Pipeline触发curl请求返回404的问题
核心问题:混淆了个人访问令牌与项目触发令牌
你当前使用的是个人访问令牌调用触发Pipeline的端点,但该端点要求使用项目专属的触发令牌,而非个人访问令牌。个人访问令牌适用于常规GitLab API调用(比如你测试的/pipelines/latest),但触发Pipeline的端点有专门的认证机制。
解决步骤
1. 获取项目触发令牌
在GitLab项目中:
- 进入「设置」→「CI/CD」
- 展开「触发器」选项
- 点击「添加触发器」,生成专属的触发令牌(保存好这个令牌,仅显示一次)
2. 使用正确的curl请求格式
用刚生成的项目触发令牌替换原请求中的个人访问令牌,以下两种格式均有效:
表单提交方式
curl -X POST --form token="项目触发令牌" --form ref="main" "https://[GitLab实例地址]/api/v4/projects/37/trigger/pipeline"
URL参数方式
curl -X POST "https://[GitLab实例地址]/api/v4/projects/37/trigger/pipeline?token=项目触发令牌&ref=main"
3. 额外排查点
- 确认项目ID正确性:若项目ID无误仍报错,可尝试用项目路径编码替代ID(比如
my-group%2Fmy-project),替换URL中的37部分 - 检查实例地址:确保GitLab实例URL无拼写错误,比如是否包含
www、指定端口(如果有) - 权限验证:生成触发令牌时,默认已具备触发Pipeline的权限,无需额外配置
内容的提问来源于stack exchange,提问作者mdailey77
相关产品推荐
相关产品推荐

