我有一个像这样的 GitLab CI 构建脚本:
create release:
stage: deploy
tags:
- basic
only:
- tags
script:
- GITLOG=$(echo "# Changes Log"; git log `git tag | tail -2 | head -1`..${CI_BUILD_TAG} --pretty=format:" - %s")
- curl -X POST -d "private_token=$CI_BUILD_TOKEN&description=$GITLOG" "http://git.example.com/api/v3/projects/${CI_PROJECT_ID}/repository/tags/${CI_BUILD_TAG}/release"
此步骤的目的是在 GitLab 版本部分自动添加来自 Git 的更改日志。
如果我在命令行上手动运行它并输入变量,那就有效了......
问题是 的值CI_BUILD_TOKEN
构建运行程序中的 不是有效的 GitLab 私有令牌 - 它只是连接到 Docker 注册表的令牌 - 根据文档。
有没有办法获取有效的 GitLab API 令牌,构建运行者可以使用该令牌来访问正在为其运行构建的项目的 API?看来这应该是可能的。
亚搏体育appGitLab运行者:
gitlab-runner -v
Version: 1.2.0
Git revision: 3a4fcd4
Git branch: HEAD
GO version: go1.6.2
Built: Sun, 22 May 2016 20:05:30 +0000
OS/Arch: linux/amd64
你可以有只读从运行器中使用 API 进行访问,但前提是您添加带有以下内容的标头CI_JOB_TOKEN.
e.g.
curl -H "JOB_TOKEN: $CI_JOB_TOKEN" "https://gitlab.com/api/v4/projects/2828837/repository/tags
And only当项目是public with 每个人都可以访问来自同一个项目。
如果您还想访问私人项目和/或写入权限,请投票亚搏体育appGitLab问题#29566 https://gitlab.com/gitlab-org/gitlab-ce/issues/29566 and/or #41084 https://gitlab.com/gitlab-org/gitlab-ce/issues/41084.
作为暂时的替代方案,您可以在gitlab https://gitlab.com/profile/personal_access_tokens,并将其添加到项目设置/ci_cd下的秘密变量中,尽管不建议这样做,因为您的个人访问令牌将被触发该作业的每个人使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)