gpt4 book ai didi

git - 让 Jenkins 通过 SSH 连接到服务器并从 git 中提取 - 构建后

转载 作者:行者123 更新时间:2023-12-02 14:13:54 24 4
gpt4 key购买 nike

我有一个 Jenkins 实例,我正在尝试创建一个持续集成工作流。我正在努力让 Jenkins 将代码放到生产服务器上。

这是我正在尝试做的事情:

  • 在推送到主分支(bitbucket)时,运行构建(工作)
  • 构建通过后,SSH 进入生产服务器(工作)
  • 在生产服务器上,git pull master 更新项目(不工作)

  • 我似乎遇到了以下问题:
  • jenkins SSH 使用用户 deploy 进入产品服务器.
  • 虽然 deployid_rsa输入 ~/.ssh , 内容为 id_rsa.pub在 repo 的 bitbucket 的“部署 key ”设置中,我得到一个 Permission denied (publickey).运行时出错 git pullgit clone .

  • 所以这让我很困惑,我不确定我哪里出错了。对我来说,这可能是其中的一件或多件:
  • 为什么没有自动获取 deploy 的 ssh 凭据?
  • prod 服务器是否应该有自己的 SSH 凭据?我认同。
  • 这个过程看起来合理吗?在我遇到这个麻烦之前它确实对我有用...

  • 非常感谢任何想法、建议或替代路线。

    更新

    当我以 jenkins 使用的同一用户身份运行此程序时,当我运行 git clone ... 时,系统提示我输入 id_rsa 的密码。这一定是 Jenkins 绊倒的地方,因为它无法解码 id_rsa。我会看看我是否可以生成一个不提示输入密码的 ssh key

    更新 2

    我为不需要使用密码的生产服务器生成了一个 ssh key ,这很好用。

    最佳答案

    首先,您应该确保 git clone/pull 在手动启动时在生产服务器上按预期工作。

    接下来,调试为什么它在 Jenkins 驱动下不起作用。

    我想到的最可能的原因是:

  • Jenkins 代理为 SSH session 填充了不正确的 ${HOME} 环境变量(我自己曾经遇到过这个错误),这取决于你如何实现你的工作。
  • 在生产环境中使用错误的 git 用户名(每个用户的全局配置可能在 ~/.gitconfig 中设置)
  • 在生产环境中使用错误的私钥/公钥访问远程 git 存储库(您可能希望在 ~/.ssh/config 中配置)

  • 我自己也实现了类似的逻辑。

    在我的情况下,生产服务器配置为 Jenkins 节点,每次在作业工作区中创建所需的 HOME 环境,并且 SSH 和 git 访问凭据在 Jenkins 上配置并在每次运行时填充到生产中

    PS:为生产服务器使用专用凭据是绝对正常的(例如出于安全原因)

    关于git - 让 Jenkins 通过 SSH 连接到服务器并从 git 中提取 - 构建后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40136314/

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