如何将标签推送到 CI 中的分支?

2024-04-12

我想将手动作业添加到我的拉取请求中,以在运行手动作业时标记我的源分支。该标签将触发我的 bitrise 配置的构建。

然而,当我尝试推送我的标签时,我遇到了这个问题。 注意:我尝试将标签推送到的分支不受保护。

$ git checkout $CI_COMMIT_REF_NAME
Switched to a new branch 'feature/gitlab-ci'
Branch feature/gitlab-ci set up to track remote branch feature/gitlab-ci from origin.
$ git tag build-bitrise
$ git push --tags
remote: You are not allowed to upload code.
fatal: unable to access 'https://gitlab-ci-token:[MASKED]@gitlab.com/my-app/my-app.git/': The requested URL returned error: 403
Cleaning up file based variables
00:01
ERROR: Job failed: exit code 1

我的工作是这样做的:

    - git remote show origin
    - git fetch
    - git checkout $CI_COMMIT_REF_NAME
    - git tag build-bitrise
    - git push --tags

在我的“before_scripts”步骤中,我这样做:

before_script:
    # Install ssh-agent through openssh-client if not present
    - 'which ssh-agent || ( apt-get update -qy && apt-get install openssh-client -qqy )'
    # Add the private key to this user
    - eval $(ssh-agent -s) && ssh-add <(echo "$SSH_PRIVATE_KEY") && mkdir -p ~/.ssh
    # Config git to avoid first usage questions. Set the identity
    - git config --global user.email "[email protected] /cdn-cgi/l/email-protection" && git config --global user.name "Louis Lecocq"

其中 SSH_PRIVATE_KEY 是一个变量,它是我在 ENV 中的 GITLAB 配置文件的复制/粘贴。

感谢您的阅读和您的时间


我认为您当前的方法不起作用,因为它仍在使用https而不是ssh为了做git tag根据错误消息,所以没有使用您的SSH_PRIVATE_KEY:

fatal: unable to access 'https://gitlab-ci-token:[MASKED]@gitlab.com/my-app/my-app.git/': The requested URL returned error: 403

您也许可以通过更新来使其工作(未经测试)git remote在执行此操作之前手动git push --tags,即:

git remote set-url origin [email protected] /cdn-cgi/l/email-protection:my-group/my-app/my-app

使用的替代方案SSH_PRIVATE_KEY是使用 API 密钥。您可以创建具有 API 访问权限的个人访问令牌https://gitlab.com/-/profile/personal_access_tokens https://gitlab.com/-/profile/personal_access_tokens,然后将密钥添加到CI/CD Variables as API_KEY例如。

然后在你的脚本部分,你可以有类似的东西:

script:
    - # something to do before pushing the tag
      # sometimes the remote might already exist (if using the same runner), let's just remove it and don't fail
    - git remote remove https-origin || true
      # add new https-origin remote which uses the API_KEY
    - git remote add https-origin https://gitlab-ci-token:${API_KEY}@gitlab.com/my-group/my-app.git
      # tag your build
    - git tag build-bitrise
      # push only the build-bitrise tag using the https-origin ref, and skip CI build
    - git push https-origin -o ci.skip refs/tags/build-bitrise

注意,建议对 API_KEY 使用机器人帐户,否则 API_KEY 将具有与您的用户相同的权限,并且可能会被能够看到 CI/CD 变量等中的密钥的其他维护者泄露。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将标签推送到 CI 中的分支? 的相关文章

  • 无法使用 git 配置文件进行 ssh

    我知道它被问了很多次 但我无法得到我的问题的答案 我正在尝试使用配置文件 ssh 到系统 配置文件是 Host qa HostName 10 218 70 345 User user IdentityFile C Users bean ss
  • gitlab 中的自动发行说明[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 任何人都可以帮助我在 git lab 中自动生成发行说明 有什么方法可以执行此操作 请告诉我 谢谢 您可以使用 API 列出里程碑中的
  • refname 不明确且拉取失败

    我运行了以下命令 因为我想将生产分支移回而不必先签出 git branch f production HEAD 1 现在 当我检查生产时 我收到以下警告 warning refname production is ambiguous 然后我
  • 重新打包存储库对于大型二进制文件有用吗?

    我正在尝试将大量历史记录从 Perforce 转换为 Git 并且一个文件夹 现在是 git 分支 包含大量大型二进制文件 我的问题是运行时内存不足git gc aggressive 我的主要问题是重新打包存储库是否可能对大型二进制文件产生
  • 如何从 android.googlesource.com 或 github.com 下载单个目录?

    我想下载 https android googlesource com platform frameworks base git master tools aapt https android googlesource com platfo
  • 在 github 上的 fork 中跟踪上游的最佳实践

    摘要 对于要维护一组本地更改的上游存储库 处理长期运行跟踪的最佳实践是什么 我想让 github 上的 fork 与上游保持同步 但仍然允许清晰跟踪 fork 特有的更改 对于本次讨论 假设upstream指向主项目存储库并且origin指
  • 如何将更改移出主分支

    基本问题 但这一直发生在我身上 进行更改working branch 切换到master git merge working branch git push cap deploy 到舞台 泡一杯新茶 然后我回来思考其他事情并开始做出一些改变
  • 如何 git grep 仅一组文件扩展名

    如何执行 git grep 并将检查的文件限制为一组文件 我希望能够 grep cpp 和 h 文件的内容来查找 MyFunc 例如 git grep MyFunc hc 但是 这也匹配 c 文件和 cs 文件 Use git grep M
  • 如何正确使用“mvn release:prepare”?

    我尝试了这个命令 用dryrun在我的 Maven 项目上进行测试 mvn release clean release prepare DdryRun true DgenerateBackupPoms false Dtag solocal
  • Composer 用于下载私有 GitHub 存储库

    我无法使用 Composer 下载 github 私人存储库 php composer phar update 我收到以下错误 The https api github com repos company private1 https ap
  • 第一次使用node.js - “ReferenceError:节点未定义”

    我刚刚安装了node js 我尝试编写应该检查版本的node v 但它不起作用 这是输出 gt node v ReferenceError node is not defined at repl 1 2 at REPLServer self
  • 默认情况下 git merge -Xignore-space-change

    我该如何设置该选项ignore space change对于所有合并使用git config 我也许可以使用别名merge 但因为我希望该设置应用于git stash pop git stash apply git pull and git
  • 如何克隆特定的 Git 标签

    From git clone 1 手册页 http git scm com docs git clone branch还可以在结果存储库中的该提交处获取标签并分离 HEAD 我试过 git clone branch
  • 如何使用 AWS Lambda 安装 Git?

    我在代码提交存储库中有代码 我正在编写一个 lambda 函数来为代码提交存储库的每个签入 事件 构建代码 我无法安装 git 因此无法克隆存储库 我该怎么办呢 正如其他人提到的 在 lambda 上安装 git 要么非常困难 要么完全不可
  • Git 将一个分支合并到所有其他分支中

    我知道这个问题已经在这里被问过 https stackoverflow com questions 2329716 merging changes from master into all branches using git https
  • 当当前分支上有未提交的更改时签出另一个分支

    大多数时候 当我尝试签出另一个现有分支时 如果我在当前分支上有一些未提交的更改 Git 会不允许我这样做 所以我必须首先提交或隐藏这些更改 然而 有时 Git 确实允许我在不提交或存储这些更改的情况下签出另一个分支 并且它会将这些更改携带到
  • 为所有子文件夹设置 git 配置值

    我知道可以设置每个存储库的配置来覆盖用户级配置 即 path to my repo gitconfig覆盖 gitconfig 是否可以设置 git 配置来覆盖给定文件夹的所有子文件夹的用户级设置 即 我有 topLevelFolder1
  • Git 在哪里存储标签?

    Git 在哪里存储标签 我执行 git tag v0 1 0 v0 10 0 v0 11 0 但目录 git refs tags是空的 Git 将这些标签存储在哪里 谢谢 它们也可以存储在 git packed refs
  • 无法通过 Git Bash 克隆 git 存储库

    在尝试使用克隆存储库时git clone 它显示以下错误 致命 无法访问 https github com microsoft c9 python getting started git https github com microsoft
  • 使当前提交成为 Git 存储库中唯一(初始)提交?

    我目前有一个本地 Git 存储库 我将其推送到 Github 存储库 本地存储库有约 10 次提交 Github 存储库是其同步副本 我想要做的是从本地 Git 存储库中删除所有版本历史记录 以便存储库的当前内容显示为唯一提交 因此存储库中

随机推荐

  • 如何获取给定 PIDL 的 IWMDMStorageControl 接口

    我使用 SHBrowseForFolder 选择 MTP 设备上的文件夹 然后我想从那里复制文件 到那里复制文件 IWMDMStorageControl 接口 来自 Windows Media Format 11 SDK 似乎很合适 但是如
  • OAuth 2.0 访问令牌和刷新令牌

    我很难理解刷新和访问令牌的正确用法 我知道刷新令牌与授权相关 访问令牌与身份验证相关 我想更好地解释我的用例 以便有人可以在这里帮助我 我在 Google Merchant Center 中有一个多帐户中心 我想在我的代码中集成最新的 OA
  • 在新线程中调用支持 CUDA 的库

    我编写了一些代码并将其放入它自己的库中 该库使用 CUDA 在 GPU 上进行一些处理 我正在使用 Qt 构建 GUI 前端 作为加载 GUI 的一部分 我调用 CUresult res CUdevice dev CUcontext ctx
  • 全新的 React Native 应用程序在 run-ios xcode 8.3 上失败

    我刚刚使用他们的 CLI 界面创建了一个新的 React Native 应用程序 但在没有进行任何更改的情况下它失败了 当我尝试使用时我第一次注意到这一点version 0 45 1 它似乎仍然发生在version 0 46 1 我当前的版
  • 如何强制 rsync 创建目标文件夹

    Example rsync tmp fol1 fol2 fol3 foln user addr tmp fol1 fol2 fol3 foln 我的主要问题是远程计算机上不存在文件夹 tmp fol1 我可以使用哪些参数来强制 rsync
  • 在 Python 中将任何用户输入转换为 int

    我需要转换用户input to int 以下是我到目前为止所写的内容 但尚未成功 它只接受int 最终目标是让用户输入浮点数 例如 4 5 输出为 4 i input Enter any value print int i int接受整数字
  • 无法使用 matplotlib 设置脊柱线样式

    我尝试设置 matplotlib 图脊柱的线条样式 但由于某种原因 它不起作用 我可以将它们设置为不可见或使它们变细 但我无法更改线条样式 我的目标是将一个图分成两部分 以在顶部显示异常值 我想将相应的底部 顶部脊柱设置为点状 以便它们清楚
  • Django 中的动态逻辑查询生成器

    我在数据库中有 2 个表 class Param models Model s name models CharField max length 200 n name models CharField max length 200 clas
  • *nix 上的 rtfd/.webarchive

    所以我的任务是将 rtfd 文件转换为 tiff 首先要事 我们获取了文件夹中的附件 在 Mac 上为 rtfd 并对它们进行了成像 我的问题在于将 RTFD 拆分为多个 rtf 文件 一位同事建议通过我们访问权限有限的 Mac 将文件转换
  • 如何检查我的登录操作中是否存在用户?

    我开始使用新的身份管理并有一个简单的需求 当我的用户使用错误的名称登录时 它会报告密码错误 如何更改此设置 以便它还使用 dbcontext 方法检查用户名是否存在 public ActionResult Login LoginViewMo
  • vi 中可以每 4 个字符添加间距吗?

    vi 中是否可以每 4 个字符添加空格 如果是的话 有什么好的谷歌术语可以搜索来学习如何做类似的事情 要每 4 个字符添加一个空格 您可以使用以下命令 至少在 VIM 中 s 1 g 如果你谷歌 VIM Substitution 你应该会得
  • Visual Studio 2022 永远不会在解决方案和索引文件上显示项目

    有人知道如何解决这个问题吗 早期版本的 Visual Studio 会发生这种情况 例如 2019 和 2017 Visual Studio 不会永远在解决方案和索引文件上显示项目 连程序文件都无法运行 已经尝试了所有方法 完全卸载 Vis
  • 从其他组件访问激活的路线数据

    我们有组件 ka cockpit panel 它没有映射到任何路线 而是手动插入到其他组件中 如下所示 section class ka cockpit panel cockpit 1 pull left section
  • 如何从maven SNAPSHOT存储库下载SNAPSHOT版本?

    所以我有一个项目 我定期发布到 Maven 没有问题 我现在想要提供该项目的快照版本 所以我做了 mvn clean 部署 一切正常 如下所示 INFO 从 sonatype nexus snapshots 检索以前的内部版本号 上传中 h
  • 谷歌应用程序引擎。如何使用内存缓存或数据存储进行同步操作?

    我的主要目标是能够拥有一些同步方法 这些方法在完成之前不应被其他线程访问 如果我有普通的虚拟机 我会将此方法标记为同步 但在 GAE 中我有多个实例 我读到的所有关于此的帖子都说我应该使用内存缓存或数据存储 但具体如何呢 通常答案是重新设计
  • 为什么 GNU binutils 和 GDB 合并为一个包?

    https sourceware org git gitweb cgi p binutils gdb git https sourceware org git gitweb cgi p binutils gdb git 尤其是请参阅tags
  • Azure 数据工作室架构图?

    我最近刚刚下载了带有 SQL Server Express 的 Azure Data Studio 因为我使用的是 Linux 是否有实体关系图表功能 就像 SQL Server Management Studio 具有数据库图表功能一样
  • 无法接受 VSTS 邀请 - 选择的国家/地区为空

    我已邀请用户从我的 ADD 到 VSTS 他收到电子邮件并登录 在 我们需要更多详细信息 表格中 您需要输入姓名 电子邮件 We ll reach you at 和国家 地区 From 但是 那From 下拉列表为空 我无法选择任何国家 地
  • node.js google oauth2 示例停止工作 invalid_grant

    我正在编写一个使用谷歌日历API的程序 所以我使用了快速启动here https developers google com google apps calendar quickstart nodejs它起作用了 但最近相同的代码停止工作并
  • 如何将标签推送到 CI 中的分支?

    我想将手动作业添加到我的拉取请求中 以在运行手动作业时标记我的源分支 该标签将触发我的 bitrise 配置的构建 然而 当我尝试推送我的标签时 我遇到了这个问题 注意 我尝试将标签推送到的分支不受保护 git checkout CI CO