git - 在生产服务器上使用Jenkins进行部署的最佳方法

标签 git jenkins ssh

我想使用Jenkins进行生产部署,并寻找一种安全且合规的可接受方法。
一点背景

  • 我想使用Shell可执行文件创建一个简单的Jenkins作业,该可执行文件将获取最新代码,替换一些文件,然后重新启动服务。
  • 我的生产服务器只能通过Jump服务器访问。

  • 当前方法
  • 我正在考虑将生产服务器添加为我的Jenkins中的代理,以使自己免于登录到Jump服务器然后再通过SSH进入生产服务器的复杂性
  • 我们需要三个这样的生产服务器来进行部署,在上述情况下,必须将所有三个服务器添加到Jenkins。

  • 是正确的选择,还是我们应该将Jump Server用作代理,然后SSH到其他计算机?
    如果我们采用另一种方法,即将服务器跳转为代理,那么运行诸如git pull / fetch,服务启动-停止等命令作为ssh命令的参数是否可行?
    我为此方法使用的当前脚本看起来像这样-
    ssh username@production-server bash -c "'
    
    sudo systemctl stop nginx
    cd /home/username/code
    git fetch --all
    git checkout "$branch_name"
    sudo cp /home/username/code/index.html /usr/share/doc/HTML/index.html
    sudo systemctl start nginx
    
    '"
    
    另外,此脚本后面还会有一些if-else语句。
    所以总结一下我的问题
    是否可以直接在Jenkins中将生产服务器作为代理添加(Jenkins只有特权人员可以访问)并运行这种命令/脚本,或者将Jump server添加为代理,然后在ssh上运行命令/脚本作为参数,可以吗?
    欢迎其他最佳方法/建议!

    最佳答案

    add the production server as an agent in my Jenkins to save ourself from the complexity of login to Jump server and then ssh to the production server


    在与我合作的机构中,这永远是不可能的:SSH始终被阻止,除非通过跳转服务器。
    实际上,任何部署都由Ansible完成,它确实具有到产品服务器的SSH连接授权。 Jenkins 在那里触发tower-cli,启动Ansible工作。

    关于git - 在生产服务器上使用Jenkins进行部署的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62775387/

    相关文章:

    windows - Git 找不到别名命令

    git - 标签上的 cherry-pick 会影响后者吗?

    git - 为前面任务发出的 asciidoctor gradle 任务提供自定义属性

    git - 在 gitflow 模型中创建修补程序分支或功能分支

    python - 是否可以在不使用 jenkins 上的 "PyAutoGUI"库的情况下使用键盘操作?

    unit-testing - 如何在本地或 Jenkins 上*自动化*基于浏览器的单元测试

    jenkins - 隐藏命令已执行,仅显示输出

    linux - 运行远程命令后 ssh session 不会关闭

    Git : Failed at pushing to remote server, ' REPOSITORY_PATH ' 不是git命令

    python - 如何将文件中的每一行作为参数传递给脚本?