使用Jenkins打包实现定制化自动部署

    技术2022-07-11  83

    目标 : 实现Jenkins 根据git分支名打包,部署指定应用

    本人项目:一个项目包含四个子应用 ops 包含:admin,app,service

     

    一.Jenkins 参数化构建

    添加四个构建参数

    1.分支号

    2.是否执行自动部署

    3.要部署的服务器环境

    4.该项目的子应用

     

    二.实现打包后自动部署

    1.需要Jenkins安装Post build task插件

    2.在构建后操作中增加Post build task

     

    Script:

    #!/usr/bin/env bash _project=ops #指定项目 #后面四个参数为构建中的四个参数 _is_deployer=${deployer} _build_number=${BUILD_NUMBER} _application=${application} _environment=${environment} if [ "$_is_deployer" == "true" ];then   cd /home/test   ./run.sh  ${_project}  ${_build_number}  ${_environment} ${_application} fi

     

    通过Jenkins插件中script调用后续部署脚本run.sh

    run.sh

    #!/usr/bin/env expect set _project [lindex $argv 0] set _build_number [lindex $argv 1] set _environment  [lindex $argv 2] set _application  [lindex $argv 3] set timeout 90 spawn su test sleep 3 send "password" sleep 3 send "cd /home/test\r" sleep 3 send "./deployer.sh $_project $_build_number $_environment $_application \r" expect "success" Interact

    脚本解释:

    1.使用expect命令 安装方法 yum install expect

    2.前四个set用于接收参数 set timeout用于指定执行脚本的超时时间

    3.通过su 自动设置密码 从Jenkins用户切换到test用户

    4.每条指令间隔我这里前面设置等待3秒保证脚本执行完成

    5.最后一个调用deployer.sh是指最终的部署,通过参数指定环境,应用,构建包号

    6.deployer.sh执行成功后返回success,expect判断接收到success完成脚本执行,等待返回值的最大时间是

    上面设置set timeout

     

    此次教程中,Jenkins插件属于简单操作,后面的部署命令调用是重点.

    每个公司都有自己的部署方式,但是Jenkins打包服务器与应用服务器基本都是分开的.

    所以会涉及到通过脚本切换服务器角色执行命令,所以这里就用到了except实现.

    Processed: 0.010, SQL: 9