gpt4 book ai didi

jenkins - 与 Jenkins 连续部署

转载 作者:行者123 更新时间:2023-12-03 08:04:13 26 4
gpt4 key购买 nike

我想与 Jenkins 一起部署到测试环境和生产环境。为此,我需要连接到所需环境的服务器,例如ssh / scp。

我想知道最好的方法是什么。

我发现有一些插件可以做到这一点,例如Jenkins-Deploy-Plug-in或Jenkins通过SSH插件发布。第一个有很多问题,要真正部署到生产环境并不值得信赖,第二个问题则需要更改全局配置,这是每个部署的手动工作。

任何想法如何解决这个问题?也许有一些脚本或插件?

我目前唯一的想法是:使用jenkins连接到服务器(也许使用SSH插件),并在那里执行连接到所需环境的脚本。但这是两个联系。真的有必要吗?我希望有一个更简单的方法。

感谢您的任何提示。

最佳答案

我建议执行以下步骤:

一个单一的shell脚本(存储在jenkins服务器上的某个位置)可以完成所有操作。
基本上,该脚本执行构建 Artifact 的scp,然后连接到服务器(ssh),并执行所有必需的部署任务(设置维护页面,备份当前应用程序,部署新应用程序...)。

在jenkins服务器上,至少有2个作业:

  • 第一个简单地进行构建(使用maven或任何其他构建脚本)
  • 第二个作业执行deploy:因此,此作业仅运行shell脚本。
    (我建议为每个目标环境执行一个部署工作:测试,生产……)

  • 它不需要任何“特殊” jenkins插件即可实现此“一键式部署”。
    它仅要求jenkins用户具有对目标服务器的ssh访问权限。

    编辑

    这是一个示例shell脚本来说明我的帖子
    #This script will copy the last artifact build by the job "MyApp" to test.myserver.com
    #and remotely execute the deployment script.

    #copy the war to the server
    #(the job "MyApp" is using maven, that's why the war can be found at this location)
    scp -i <HOME_DIR>/.ssh/id_dsa $HUDSON_HOME/jobs/MyApp_Build/workspace/myapp/target/myapp.war deployeruser@test.myserver.com:/tmp/

    #connect to the server and execute the deployment script
    ssh -i <HOME_DIR>/.ssh/id_dsa deployeruser@test.myserver.com
    #The following is just an example of what a deployment script can be.
    #of course you must adapt it to your needs and environment
    "cd <TOMCAT_DIR>;
    #first copy the current war to a backup directory (additionaly, I have a cron task deleting old undeployed apps)
    cp -rf myapp-apps/myapp* undeployed/myapp-apps/;
    #execute a script (stored on the server) to properly stop the app
    sh bin/myapp.sh stop;
    #delete current app
    rm -rf myapp-apps/myapp;
    rm -rf myapp-apps/myapp.war;
    #copy the uploaded war in tomcat app directory
    cp /tmp/myapp.war myapp-apps/;
    #execute a script (stored on the server) to start the app
    sh bin/myapp.sh start"

    关于jenkins - 与 Jenkins 连续部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13976373/

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