作为 Azure DevOps 中发布管道的一部分,将更改推送到 GitHub 存储库

Posted

技术标签:

【中文标题】作为 Azure DevOps 中发布管道的一部分,将更改推送到 GitHub 存储库【英文标题】:Push changes to GitHub repository as a part of release pipeline in Azure DevOps 【发布时间】:2020-03-19 00:11:49 【问题描述】:

我正在尝试创建一个发布管道:

    更新 docker-compose.yml 中的 docker 映像,该映像是我的部署存储库的一部分 通过 SSH 将日志记录到我的服务器 [在我的远程服务器上] 获取最新的部署存储库 [在我的远程服务器上] 运行更新后的 docker-compose.yml

我坚持第 1 点。我设法让我的存储库可用,我更新了 docker-compose.yml 文件(通过 bash 脚本),我可以提交更改但不幸的是推送失败。

这是我的发布管道,其中包含两个工件:

    我用来获取要发布的内部版本号的构建管道 我的 GitHub 存储库(因为我使用的是 2FA,所以我通过个人令牌链接它)

这是我的三个 bash 脚本的阶段 - 前两个正在更新 docker-compose.yml,第三个应该将更改提交到存储库并推送它。

这是我在运行该版本时得到的结果:

在执行 git push 时似乎存在一些身份验证问题,但我不知道如何解决这个问题。这个SO 表明这是在 git 端启用 2FA 的问题,但由于我使用个人访问令牌对 git 进行身份验证,因此不应使用 2FA。即使我按照 SO 中的建议将此行添加到我的脚本中:

git config --global --add url."git@github.com:".insteadOf "https://github.com/"

它仍然失败并出现以下错误:

Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

谁能指导我如何正确推送 git 存储库作为 Azure 发布管道的一部分?

【问题讨论】:

【参考方案1】:

我找到了一个似乎可以解决我的问题的解决方法。我已从工件列表中删除了存储库,而是手动执行所有操作:

    安装 SSH 密钥(通过本机安装 SSH 密钥任务) 使用 SSH 密钥(通过 Bash 脚本)克隆存储库 执行所有逻辑 清理存储库(不确定是否需要这样做,但为了安全起见...)

【讨论】:

您好朋友,非常感谢您分享这个解决方案。请mark your reply as answer,这将有助于其他社区成员更轻松地搜索此有用信息,这只是一个提醒:)

以上是关于作为 Azure DevOps 中发布管道的一部分,将更改推送到 GitHub 存储库的主要内容,如果未能解决你的问题,请参考以下文章

Azure Databricks 的 Azure DevOps 管道

使用 ACR(天蓝色容器注册表)作为 Azure Devops json 管道的输入

无法使用服务主体从发布管道访问 Azure Devops Git 存储库

在 azure-devops 中的发布管道期间创建标签

在 PowerShell 脚本中访问 Azure DevOps 管道中的安全文件

在 Azure Devops 中为基于 Python 的 Azure Function 设置发布管道的正确方法