如何在GitLab CI中通过Tags API创建标签?能否使用JOB_TOKEN鉴权?
问题解答
可以直接使用CI_JOB_TOKEN完成Tags API的鉴权,无需使用私有令牌,你遇到的404报错是CI_JOB_TOKEN的默认权限不足导致,并非令牌类型不支持该接口。
解决步骤
- 进入项目的「设置」-「CI/CD」页面,找到「令牌访问」分区,勾选「允许作业令牌创建和管理标签」选项后保存配置
- 如果你的CI任务运行在受保护分支上,还需要额外配置权限:进入项目「设置」-「仓库」-「受保护分支」,找到对应分支的编辑选项,开放「CI/CD作业」角色的推送权限
- 可选优化:POST请求参数建议放在请求体中而非URL查询串,避免编码异常导致的请求失败,修正后的代码示例如下:
$tagName = [Uri]::EscapeDataString($env:FULL_PRODUCT_VERSION) $ref = [Uri]::EscapeDataString($env:CI_COMMIT_SHA) $createTagApiEndpoint = "$env:CI_API_V4_URL/projects/$env:CI_PROJECT_ID/repository/tags" $headers = @{"JOB-TOKEN" = $env:CI_JOB_TOKEN} $body = @{ tag_name = $tagName ref = $ref } Invoke-WebRequest -Headers $headers -Method POST -Uri $createTagApiEndpoint -Body $body
内容的提问来源于stack exchange,提问作者Aleksey Usatov
相关产品推荐
相关产品推荐

