从 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 的相关文章

  • 无法访问 GitLab:SSL 证书已过期

    在 Visual Studio 中 我尝试从 GitLab 上的存储库中提取一些更改 但它给了我一个错误 Git 因致命错误而失败 无法访问https gitlab git SSL证书问题 证书已过期 如何生成新证书并将其添加到 VS 中
  • 使用 Windows 命令行将多行环境变量回显到文本文件

    我有一个环境变量 SSH PRIVATE KEY 并希望使用命令行将其打印到文件中 而不使用批处理文件 这是因为我需要在 Gitlab Ci yml 脚本中使用此文件 在 Linux 中 这很简单 echo SSH PRIVATE KEY
  • gitlab:带有大型存储库的 git clone https 失败

    当尝试通过 https 克隆大型存储库 700MB 时 git 失败并显示 c git projects gt git clone https git mycompany de fs git Cloning into fs Username
  • 将环境变量传递给子shell CMD

    我的系统有问题gitlab ci yml在 Windows 上 我发射phpunit与环境变量 所以 我有一个像这样的变量 PHPUNIT SOURCE PATH cgi bin php exe PHPUNIT PATH 之前声明了一些变量
  • 如何使用.NET从gitlab hooks获取推送信息

    我需要写一个网站来显示我们团队的推送信息 现在我遇到一个问题 如何从gitlab获取信息 the type of push infomation is JSON and what you need to do is to add a URL
  • 如何使用 LDAP 身份验证使用 gitlab 设置管理员用户?

    我刚刚设置了 gitlab 但我完全迷失了管理员用户 维基百科似乎对这个话题保持沉默 谷歌也没有提供帮助 那么 如何在 LDAP 身份验证上使用 gitlab 设置管理员用户 您还可以通过在 Rails 控制台中执行以下操作来为用户设置管理
  • 如何在同一实例中运行 Gitlab CI 作业

    我已经自动缩放了 gitlab runnerAWS现货实例 而且效果很好 我在运行作业时遇到问题 下面是我的 gitlab ci yml它有两个阶段 stages build dev1 build build stage build scr
  • Gitlab 合并请求事件不触发 Jenkins 多分支管道

    我正在尝试在合并请求事件上使用 GitLab Webhook 触发 Jenkins 多分支管道作业 当我测试 Webhook 时 我收到以下消息 Hook 执行成功但返回 HTTP 409 当我设置不同的 GitLab Webhook 例如
  • 合并请求、审核流程以及在 GitLab 中使用注释

    我们目前正在评估 GitLab 在我们项目中的使用情况 我们发现稍有偏差的是审查合并请求时的评论 当在代码审查过程中输入一些注释并推送新的提交来解决这些注释时 问题就开始了 对提交所做的评论和对 更改 面板所做的评论都显示在 讨论 选项卡上
  • 通过 bash 命令设置 gitlab-ci.yml 变量

    variables CUSTOM NODE VERSION cat nvmrc 我想要变量CUSTOM NODE VERSION通过内容填充 nvmrc文件 位于项目根目录中 如何在gitlab ci yml file 上面的例子不起作用
  • gitlab 请求将分支 A 合并到开发中(落后 3 次提交)我应该担心吗?

    在 gitlab 中创建合并请求时 我经常收到一条消息 请求将分支 A 合并到开发中 x 提交落后 gitlab想告诉我什么 我应该担心还是需要修复某些东西 什么 一段时间后合并请求在项目中打开时 由于其他人合并了自己的更改 您尝试合并到的
  • 从自己的 gitlab 服务器安装节点模块

    我想从我们的 gitlab 服务器安装节点模块 这是存储库的链接 http ABCD GITLAB myGroup myNodeModule git http ABCD GITLAB myGroup myNodeModule git 根据n
  • 使用Gitlab Pipeline将数据推送到ftpserver

    我想使用 Gitlab 管道部署到 ftp 服务器 我尝试了这段代码 deploy You can name your task however you like stage deploy only master deploy script
  • 如何恢复误删除的Gitlab问题?

    看来我不小心删除了一个Gitlab问题 有什么办法可以恢复吗 None
  • Gitlab 6.2 不与授权密钥同步

    我放入 Gitlab GUI 中的密钥没有显示在authorized keys 文件中 因此我无法推送或拉过 ssh 任何尝试都会要求我输入 ssh 密码 我使用的是 gitlab 6 2 稳定版 这是一些命令的输出 git CVIAL27
  • Gitlab 机架攻击安装

    我正在安装 gitlab 并遵循 Gitlab 安装指南的所有说明 一切正常 但在 初始化数据库并激活高级功能 步骤中 它失败了 https github com gitlabhq gitlabhq blob master doc inst
  • Travis-CI:docker 镜像作为构建环境

    In 特拉维斯 西尔是否可以从 docker 容器内部运行构建过程 In 亚搏体育appGitLab持续集成 http docs gitlab com ce ci docker using docker images html这是默认设置
  • 在标签上运行管道时如何获取分支名称?

    我从标签运行管道 比方说v1 0 0 在一个分支上 比方说staging 我的输出文件是用创建的 CI PROJECT NAME CI COMMIT REF NAME apk 结果是一个名为MyProject v1 0 0 apk 我希望在
  • 从 .gitlab-ci.yml 中的 JSON 中提取徽章 ID

    我有一个示例项目 https gitlab com mstein badge number example repo在 gitlab 中 我想获取最后一个徽章的 ID gitlab ci yml通过脚本 我了解所有徽章的概览作为 json
  • Gitlab CI/CD 管道给出 Dockerfile 错误

    晚上好 我正在尝试将我的nodeJS应用程序部署到我的Digital Ocean Server 它说找不到我的Dockerfile 我确实检查过 Dockerfile 没有 txt 扩展名 任何指导表示赞赏 我在 Gitlab 项目中设置了

随机推荐