从 GitLabCI 构建脚本使用 GitLab API

2023-12-20

我有一个像这样的 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(使用前将#替换为@)

从 GitLabCI 构建脚本使用 GitLab API 的相关文章

随机推荐