gpt4 book ai didi

git - Jenkins git推送多个分支

转载 作者:行者123 更新时间:2023-12-02 14:30:46 25 4
gpt4 key购买 nike

我有一个由我用来管理我的 git 流的 shell 脚本组成的 Jenkins 工作。该脚本通过 SSH 连接到远程 git 存储库,并对分支进行更改 devmaster .我希望它将这两个分支推回远程仓库。

Git Publisher 后期构建操作允许您将 HEAD 推送到一个远程分支,但不允许推送多个分支]( https://issues.jenkins-ci.org/browse/JENKINS-21681 )。

我尝试从 shell 脚本执行“git push”,但得到“权限被拒绝(公钥)”。在构建日志中,我可以看到 Jenkins 使用插件为构建前和构建后操作注入(inject) SSH 凭据:

[WS-CLEANUP] Deleting project workspace...
[WS-CLEANUP] Done
Cloning the remote Git repository
Cloning repository git@my.repo.url:path/to/repo/test.git
> git init /home/jenkins/workspace/node-injection/release # timeout=10
Fetching upstream changes from git@my.repo.url:path/to/repo/test.git
...
Seen branch in repository origin/dev
Seen branch in repository origin/master
Seen 2 remote branches
# ... do some work
+ git push origin master dev --follow-tags
Fetching origin
Permission denied (publickey).
fatal: Could not read from remote repository.

有没有办法将 SSH 凭据传递给 shell 脚本,以便它可以 git push ?

我不想将用户/密码传递给 shell 脚本,因为这将迫使我为我管理的每个存储库创建一个用户,而我可以为单个用户拥有多个部署 key (这更容易管理)。

最佳答案

我最终找到了答案:

  • 当您为 git 存储库创建 SSH 凭证时:don't use a passphrase .
  • 在您的 Jenkins 作业配置中,选中“使用 secret 文本或文件”并添加带有所需凭据的“SSH 凭据”条目。在“ key 文件变量”字段中,输入 GIT_SSH_KEYS_PATH .
  • 为每个需要它的命令注入(inject) ssh 凭据,如下所示:
    GIT_SSH_COMMAND="ssh -i $GIT_SSH_KEYS_PATH" <git-command>

    例如:
    GIT_SSH_COMMAND="ssh -i $GIT_SSH_KEYS_PATH" git push origin master dev --follow-tags
  • 关于git - Jenkins git推送多个分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47527638/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com