Jenkins配置回滚思路:
目前只能实现使用salt来管控配置文件的管控,配置文件的版本回滚需要后续定制化开发,或者进行格外其他的管理操作。后续实现
以下配置可以为每个项目备份构建文件到本地指定路径
测试路径说明:
[root@jenkins-lopc-test-11 target]# pwd
/opt/jenkins/jobs/pro/jobs/activiti/builds/30/archive/target
 
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"按钮测试是否能够连接成功。
 
监测代码变动自动部署
  • 点击左侧边栏的“新建”按钮,新建一个任务。
  • 填写项目的名称,并选择一种构建的方式,此时我们选择第一个,构建一个自由风格的软件项目,然后点击“OK”按钮创建任务,并进行详细的配置(这里选择的是自由风格的软件项目,项目的打包实在脚本命令中进行)
 
新建任务
  • 默认设置里填写项目名和描述,并选择之前配置好的要连接的svn(这里使用本地链接配置)
 
默认配置
  • 配置源码,填写要构建项目的源码仓库地址。
 
配置源码
  • 配置触发器,选择触发构建的方式,选择的定时检测项目变动,如果检测到分支有新的变动就触发构建,可以自己设置时间频率。
 
构建触发器
  • 配置构建后操作, 该行为会在构建完成后执行,我们选用的是“Send build artifacts over SSH”的方式,把构建完成的jar包发送到远程服务器上用ssh命令执行启动,此时jenkins所有机器的默认路径是任务所在的目录,远程机器的默认路径是之前publish-over-ssh中指定的文件地址。Source files指定要传送到远程服务器上的文件,remote directory指定的是传送到远程服务器上的文件地址,Remove prefix是值要去除的文件目录,不然传送到远程服务器也会带有该目录层级结构的。exec Command里输入的是在远程服务器上要执行的指令。
邮件通知
构建部署配置
  • 项目构建后会有构建历史,点击进去,选择“Console Output”就可以查看构建过程中的执行记录
至此使用jenkins自动部署(自动打包,替换jar包到此结束。)
 
使用Jenkins配置项目回滚(jar包回退)
  • 目前实现了项目的自动部署,但有时需要在部署失败时回滚到指定版本的构建,这样才能更灵活的进行项目的构建部署。可以选择“参数化的构建过程”进行传递不同的参数来选择是进行新的构建还是回滚。
  • 要实现回滚,一定要在构建后将,构建完成的文件进行存档,方便以后回滚的时候使用。
 
构建后存档
  • 使用参数化构建过程,让后面的脚步可以根据不同的变量执行不同的操作。添加“Choice”参数配置不同的选项,让选择发布还是回滚,添加“String Parameter”参数来传递要回滚的版本号。
 
参数和构建过程
  • 构建选择“Execute Shell”的方式,自己根据变量,自定义构建的脚本。
  • 如果是参数是选择deploy就使用maven的构建过程进行新的构建
  • 如果是回滚,知道历史构建后的文件,复制到当前构建结果目录。
脚本内容:
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
构建脚本
  • 点击构建,根据不同的参数选择发布还是回滚,回滚的时候填写要回滚到的历史版本号
构建页面
配置文件回滚:
整体配置实现思路是通过参数,将每次构建的版本号传递过去,在客户机本地创建相关相关备份目录。备份相关目录文件即可。后续结合怎么使用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

2、jenkins+svn自动发布和回滚的更多相关文章

  1. Jenkins 搭建企业实战案例 (发布与回滚)

    让我们的代码部署变得easy,不再难,Jenkins是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.Jenkins非常易于安装和配置,简单易用 ...

  2. Jenkins实用发布与回滚PHP项目生产实践

    目录 1.概述 2.项目实践 2.1.环境说明 2.2.Jenkins配置 2.2.1.修改Jenkins的运行用户 2.2.2.配置Jenkins用户和Gitlab的ssh-key 2.2.3.Je ...

  3. ansible实现发布、回滚功能

    ansible的两篇博客,本来是打算合二为一的,发现只用一篇写,嗯,好鬼长.... 一向秉承简单为美的我于是忍痛割爱,一分为二了 ansible实现升级发布.回滚功能 1.应用场景 在实际生产环境中, ...

  4. Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(四):发布与回滚

    写在前面 我们以前windows跑.net Framework程序的时候,发布,自己乖乖的替换程序:备份,也是自己一个一个的重命名备份:回滚,发布遇到问题的回滚更是不用说了:运维很是怕我们 这些用wi ...

  5. jenkins 实现测试发布、预发布、真实发布、回滚发布

    主要思路: 1.做三个文件夹,用于放置不可随意修改的配置文件(测试发布.预发布.真实发布) 2.每次都先修改配置文件再进行构建(构建时会先把配置文件复制到构建的目录,再同步到发布的目录) 3.发布完代 ...

  6. Jenkins+tomcat自动发布的热部署/重启及遇到的坑解决办法

    一.背景 公司的项目一直手动maven打包.上传服务器.关闭/开启tomcat,整个流程下来耗时耗力,虽然可以将所有流程通过shell脚本一次性解决,但如果可以通过idea的Jenkins插件一键自动 ...

  7. svn命令行版本回滚

    下面以版本号2011回滚到2010为例,在命令行输入: svn merge --dry-run -r 2011:2010 http://my.repository.com/my/project/tru ...

  8. k8s用kubectl管理应用升级,服务发布与回滚,扩缩容

    应用升级 Kubectl set image --help 有案例指定新版本 [root@k8s-master ~]# kubectl set image deployment/nginx nginx ...

  9. 配置Jenkins 实现自动发布maven项目至weblogic(svn+maven+weblogic12c)

    Jenkins安装完成之后,需要我们对其配置,然后才可以实现自动部署项目. 前提 防火墙开放weblogic的7001端口 Linux(CentOS):firewall-cmd --zone=publ ...

随机推荐

  1. 开启ucosii的移植之旅

    开启ucosii的移植之旅: 4.6.1.移植和硬件平台的关系 (1)只要是cortex-m3内核内核的soc移植差异都不大. 同内核同soc的不同开发板移植差异都不大. 不同内核的开发板移植难度大, ...

  2. Golang 介绍与安装

    1.介绍与安装 Golang 是什么 Go 亦称为 Golang(按照 Rob Pike 说法,语言叫做 Go,Golang 只是官方网站的网址),是由谷歌开发的一个开源的编译型的静态语言. Gola ...

  3. bzoj 5301: [Cqoi2018]异或序列 (莫队算法)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=5301 题面; 5301: [Cqoi2018]异或序列 Time Limit: 10 Sec ...

  4. 当PsychicBoom_发觉自己是个大SB的时候……

    这些题都是没ac调了好久发现是sb错误的题--. 想清楚再写题!!! 2019.4.18 洛谷P5155 [USACO18DEC]Balance Beam 转移方程\((a[l[i]]*(r[i]-i ...

  5. JavaEESpringMVC基础整理

    1.什么是 SpringMVC ? 在介绍什么是 SpringMVC 之前,我们先看看 Spring 的基本架构.如下图: 我们可以看到,在 Spring 的基本架构中,红色圈起来的 Spring W ...

  6. jenkins_jmeter配置

    echo "job begin" date export current_time=`date "+%Y%m%d_%H%M%S"` mkdir -p ${WOR ...

  7. Java IO系列之一:IO

    1. 概述 Java IO一般包含两个部分: 1.java.io包中堵塞型IO: 2.java.nio包中的非堵塞型IO,通常称为New IO. java.io包下,分为四大块近80个类: 1.基于字 ...

  8. Mac 下 Eclipse 添加 Dynamic Web Project 并配置 Tomcat

    最近拿到了一个 Dynamic Web Project,我的 Mac 上的 Eclipse 之前没有过这类型的项目,所以导入之后无法正常运行.下面是我记录的如何配置 Eclipse 使之能够运行 Dy ...

  9. ES6.3.2 index操作源码流程

    ES 6.3.2 index 操作源码流程 client 发送请求 TransportBulkAction#doExecute(Task,BulkRequest,listener) 解析请求,是否要自 ...

  10. tomcat配置及环境搭建

    步骤一 下载tomcat 下载tomcat并安装,登陆tomcat官网,http://tomcat.apache.org/,Windows系统建议选择Windows Service Installer ...