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

CI流水线中使用CI_JOB_TOKEN调用API返回404问题排查

问题排查与解决

1. 错误的请求头使用(关键)

你把Job-Token换成Private-Token是完全错误的:

  • CI_JOB_TOKEN是GitLab CI生成的作业令牌,只能通过Job-Token请求头传递,它和个人访问令牌(Private-Token)是两种完全不同的身份凭证,混用必然会返回invalid_token错误。
  • 必须严格使用Job-Token: $CI_JOB_TOKEN作为请求头。

2. 检查CI_JOB_TOKEN的项目访问权限

即使文档说明默认允许,也有可能项目层面的设置被修改:

  • 进入项目的「设置」→「CI/CD」→「令牌访问范围」
  • 确认「允许作业令牌访问当前项目」选项已勾选,未开启的话会直接导致API调用返回404。

3. 验证环境变量的正确性

先在test_job的脚本里添加变量打印,确认路径拼接无误:

script:
  - apk add curl
  - echo "API URL: $CI_API_V4_URL"
  - echo "Project ID: $CI_PROJECT_ID"
  - echo "Pipeline ID: $CI_PIPELINE_ID"
  - |
    curl --header "Job-Token: $CI_JOB_TOKEN" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/pipelines/${CI_PIPELINE_ID}/jobs"

如果打印出的变量为空或错误,说明CI变量没有正确注入,需要检查项目的CI/CD变量设置,确保这些预定义变量未被覆盖或禁用。

4. 确认API路径的正确性

GitLab API v4中,获取指定流水线作业列表的路径是正确的,但要注意:

  • CI_PROJECT_ID必须是项目的数字ID(不是项目路径),预定义变量CI_PROJECT_ID默认就是数字ID,但若你手动替换成了项目路径,会导致404。
  • 如果是自托管GitLab,确认CI_API_V4_URL指向的是正确的GitLab实例API地址(比如https://your-gitlab.com/api/v4)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:52:47