如果您的 GitLab CI 管道在尝试使用CI_JOB_TOKEN
访问存档包时开始抛出403 Forbidden
错误,则您很可能遇到了GitLab 18中默认强制执行的安全更改。
这不是一个全新的功能 – 但现在,您需要明确配置访问权限,否则您的作业将失败。
📍 GitLab 18 有哪些变化?
GitLab 自 15.9 起支持作用域作业令牌权限的概念。此功能允许项目维护者使用CI_JOB_TOKEN
限制哪些其他项目或组可以访问其资源。
有一段时间,此行为是可选的,或者隐藏在功能开关后面。但从GitLab 18开始,旧的隐式访问权限已不复存在。现在您必须明确授权项目或组,否则,您的作业令牌将默认被拒绝访问。
❗ 症状
如果您在 CI 日志中看到类似这样的内容:
error: failed to download package: 403 Forbidden
您可能正在尝试从另一个项目获取包或存档,但未在 GitLab 更新的安全模型下设置正确的权限。
✅ 如何修复
要允许一个项目的 CI 作业使用CI_JOB_TOKEN
访问另一个项目的存档包:
- 转到目标项目(托管档案的项目)。
- 导航到设置→CI/CD 。
- 展开“作业令牌权限”部分。
- 在授权组和项目下,添加需要访问的源组或项目。
- 保存更改。
就是这样 – 这将授予您的管道在 GitLab 18 下按预期运行所需的访问权限。
💡 DevOps 团队小贴士
在升级到 GitLab 18 之前,请检查您现有的管道。如果您的工作流程依赖于通过CI_JOB_TOKEN
进行跨项目访问,请确保提前配置这些权限,以避免意外的管道故障。
🔁 摘要
- 这不是 GitLab 18 中的新功能 —— 它现在是必需的。
- 您必须在目标项目的设置中明确授权作业令牌访问。
- 如果不这样做,访问包时将出现403 Forbidden错误。
通过更新您的项目权限,您的 CI/CD 管道将恢复正常,并且比以前更加安全。