zoukankan      html  css  js  c++  java
  • 2、jenkins+svn自动发布和回滚

    Jenkins配置回滚思路:
    目前只能实现使用salt来管控配置文件的管控,配置文件的版本回滚需要后续定制化开发,或者进行格外其他的管理操作。后续实现
    以下配置可以为每个项目备份构建文件到本地指定路径
    clipboard
    测试路径说明:
    [root@jenkins-lopc-test-11 target]# pwd
    /opt/jenkins/jobs/pro/jobs/activiti/builds/30/archive/target
    clipboard
     
    clipboard
    pro是jenkins上自己配置的文件目录名称
    activiti是jenkins上配置的jobs名
    30是版本号,jenkins上构建的版本号
    activiti-0.0.1-SNAPSHOT.jar:构建的jar包
    在最后一次成功的构建结果处,可以获取到最新版本的构建文件。
    如果要回滚版本,可以写个脚本文件覆盖发布路径下的文件即可。
    简单说就是利用参数化构建,建立choice,choice里面建立两个变量,一个是发布新版,一个是回滚旧版。选择变量类型string parameter来传递要回滚的版本号。构建时选择运行t脚本,写上判断语句,判断是发布还是回滚。
     
    安装插件
    publish Over SSH
    svn
    maven Integration
    Publish Over SSH
    • 通过ssh连接远程服务器,并能执行脚本部署项目
    • 安装publish-over-ssh
    • 在“系统管理” -> “系统设置“ -> “Publish over SSH” 中配置对应的ssh信息
    • Key中填登录远程服务器的密码
    • 点击"SSH Servers"后的“增加”按钮,新增一个远程服务器
    • 点开“高级...”按钮,能进一步的配置端口等信息。
    • 配置为Server信息后,点击"Test Configuration"按钮测试是否能够连接成功。
    clipboard
     
    监测代码变动自动部署
    • 点击左侧边栏的“新建”按钮,新建一个任务。
    • 填写项目的名称,并选择一种构建的方式,此时我们选择第一个,构建一个自由风格的软件项目,然后点击“OK”按钮创建任务,并进行详细的配置(这里选择的是自由风格的软件项目,项目的打包实在脚本命令中进行)
    clipboard
     
    新建任务
    • 默认设置里填写项目名和描述,并选择之前配置好的要连接的svn(这里使用本地链接配置)
    clipboard
     
    默认配置
    • 配置源码,填写要构建项目的源码仓库地址。
    clipboard
     
    配置源码
    • 配置触发器,选择触发构建的方式,选择的定时检测项目变动,如果检测到分支有新的变动就触发构建,可以自己设置时间频率。
    clipboard
     
    构建触发器
    • 配置构建后操作, 该行为会在构建完成后执行,我们选用的是“Send build artifacts over SSH”的方式,把构建完成的jar包发送到远程服务器上用ssh命令执行启动,此时jenkins所有机器的默认路径是任务所在的目录,远程机器的默认路径是之前publish-over-ssh中指定的文件地址。Source files指定要传送到远程服务器上的文件,remote directory指定的是传送到远程服务器上的文件地址,Remove prefix是值要去除的文件目录,不然传送到远程服务器也会带有该目录层级结构的。exec Command里输入的是在远程服务器上要执行的指令。
    clipboard
    邮件通知
    clipboard
    构建部署配置
    • 项目构建后会有构建历史,点击进去,选择“Console Output”就可以查看构建过程中的执行记录
    至此使用jenkins自动部署(自动打包,替换jar包到此结束。)
     
    使用Jenkins配置项目回滚(jar包回退)
    • 目前实现了项目的自动部署,但有时需要在部署失败时回滚到指定版本的构建,这样才能更灵活的进行项目的构建部署。可以选择“参数化的构建过程”进行传递不同的参数来选择是进行新的构建还是回滚。
    • 要实现回滚,一定要在构建后将,构建完成的文件进行存档,方便以后回滚的时候使用。
    clipboard
     
    构建后存档
    • 使用参数化构建过程,让后面的脚步可以根据不同的变量执行不同的操作。添加“Choice”参数配置不同的选项,让选择发布还是回滚,添加“String Parameter”参数来传递要回滚的版本号。
    clipboard
     
    clipboard
    参数和构建过程
    • 构建选择“Execute Shell”的方式,自己根据变量,自定义构建的脚本。
    • 如果是参数是选择deploy就使用maven的构建过程进行新的构建
    • 如果是回滚,知道历史构建后的文件,复制到当前构建结果目录。
    clipboard
    脚本内容:
    case ${deploy_env} in
    deploy)
    echo "deploy: ${deploy_env}"
    pwd
    #指定maven的绝对路径,并根据实际情况使用-f指定pom.xml的地址
    /usr/local/maven-3.5/bin/mvn clean install package
    ;;
    rollback)
    echo "rollback: ${deploy_env}"
    echo "version: ${version}"
    rm -rf target
    #后续统一标准后需要将项目名称标准化(归档的包根据实际情况进行填写),
    cp -R ${JENKINS_HOME}/jobs/pro/jobs/${JOB_BASE_NAME}/builds/${version}/archive/target .
    pwd && ls && ifconfig
    ;;
    *)
    exit
    ;;
    esac
    构建脚本
    • 点击构建,根据不同的参数选择发布还是回滚,回滚的时候填写要回滚到的历史版本号
    clipboard
    构建页面
    配置文件回滚:
    整体配置实现思路是通过参数,将每次构建的版本号传递过去,在客户机本地创建相关相关备份目录。备份相关目录文件即可。后续结合怎么使用saltstack将salt管控的配置文件同步到业务机上。

    source /etc/profile;
    appdir="/opt/gm-activitiweb";
    backupdir="/opt/backup/jenkins/${BUILD_NUMBER}";
    rollbackdir="/opt/backup/jenkins/rollback";
    currenttime="`date +"%Y%m%d%H%M"`";
    mkdir -p ${backupdir} && cp -R ${appdir}/config ${backupdir};
    if [[ ${deploy_env} == "rollback" ]];then
    mkdir -p ${rollbackdir}/${currenttime} && mv ${appdir}/config ${rollbackdir}/${currenttime} &&
    cp -R /opt/backup/jenkins/${version}/config ${appdir};
    fi;
    cd ${appdir} && sh stop.sh && sh startup.sh; 
    参考链接:
    https://blog.csdn.net/flyingshuai/article/details/73457850
  • 相关阅读:
    最近的一些心理活动
    object_c函数多个返回值
    nslayoutConstraint
    判断一些常用的东西
    color 的一些处理
    最近的心理活动
    加载不同的nib文件
    Be a person
    按钮居左显示
    SQLite错误码
  • 原文地址:https://www.cnblogs.com/jmucai/p/10747221.html
Copyright © 2011-2022 走看看