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

使用jenkins进行项目的自动构建部署 - 简书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值