我有一个像这样的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注册表的令牌 - 根据文档。< / p>
有没有办法获得一个有效的GitLab API令牌,构建运行器可以使用它来访问它运行构建的项目的API?似乎这应该是可能的。
GitLab Runner:
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
答案 0 :(得分:14)
您可以使用来自跑步者的API进行只读访问,但前提是您添加了 CI_JOB_TOKEN 的标题。
e.g。
curl -H "JOB_TOKEN: $CI_JOB_TOKEN" "https://gitlab.com/api/v4/projects/2828837/repository/tags
仅当项目公开且每个人都有权访问来自同一项目。
如果您想要访问私人项目和/或写入权限,请向上投票GitLab issue #29566和/或#41084。
作为目前的替代方案,您可以在gitlab上创建一个访问令牌,并将其添加到项目设置/ ci_cd下的秘密变量中,尽管不是真的建议您这样做,因为您的个人访问令牌将是每个触发这项工作的人都会使用它。
答案 1 :(得分:1)
您是否尝试使用Secret Variables?您可以在设置中定义,然后在构建脚本中使用。