使用Gitlab项目访问令牌提交代码触发CI/CD时用户未验证报错
解决GitLab项目访问令牌触发流水线报「用户未验证」的问题
核心原因
项目访问令牌会自动生成独立的服务用户(格式通常为 project_{项目ID}_bot),该用户的邮箱默认处于未验证状态,而GitLab流水线要求触发用户必须是已验证用户,因此导致报错。
解决步骤
定位服务用户
- 进入项目的「设置」→「访问令牌」,找到已创建的项目访问令牌,查看对应的服务用户名
- 或在GitLab管理员后台的「用户」页面,搜索上述用户名找到该用户
验证服务用户邮箱
- 自托管GitLab环境:进入该服务用户的详情页,找到「邮箱」字段,点击「验证」按钮完成邮箱验证
- 也可通过GitLab API完成验证(需管理员权限令牌):
curl --request PUT --header "PRIVATE-TOKEN: <管理员令牌>" "https://你的GitLab地址/api/v4/users/{user_id}/email_verification" --data '{"email": "服务用户的邮箱地址"}'
测试验证结果
重新使用项目访问令牌提交代码触发流水线,即可正常运行。
注意事项
- 该服务用户仅关联当前项目,验证后不会获得其他项目权限,完全符合限制单个项目访问的需求
- 无需使用个人访问令牌,避免过度授权带来的安全风险
内容的提问来源于stack exchange,提问作者Stiv
相关产品推荐
相关产品推荐

