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