目录
一、导语
二、Jenkins远程服务器部署、启动
三、Jenkins生产环境回滚
四、Git 分支构建
五、禅言慧语选闲
一、导语
Jenkins是什么,如何安装、配置、部署以及基本应用,已在上一篇《Jenkins安装配置,项目发布、管理详解,史上最清晰,值得收藏!》做过详细的讲解。
本文将对jenkins 的高级应用做进一步讲解。相信通过这两篇文章,大家能对jenkins有一个全面、深入的认识,并能应用于生成环境。
演示用的脚本和代码依然是从github下载:
https://github.com/wzjgn/xinwei-example.git
二、Jenkins远程服务器部署、启动
jenkins自动将打包成果发送到远程服务器,并重新部署、启动服务。
jenkins支持非常灵活的配置方案,本文主要介绍种常用两种方式:
Publish over SSH
Post Steps 自定义shell脚本
准备工作
ssh免密配置
Jenkins所在机器通过SSH服务,将构建的代码包分发到远程服务器,并登录到远程服务器执行脚本,需要做免密配置。
本文案例通过设置SSH key免密访问远程服务器。
如有服务器A、B,现想A通过ssh免密码访问B,则将A机器中的id_rsa.pub ,拷贝到B机器的 .ssh/authorized_keys 文件中。
cat id_rsa.pub >> .ssh/authorized_keys
#拷贝A服务器公钥到B服务器authorized_keys文件,默认该文件不存储,系统会新建该文件。
$ chmod 600 authorized_keys
#设置.ssh目录权限
A机器第一次ssh 登录到B机器时,需要输入B机器的密码,以后就可以不输入了。
2.1、Publish over SSH
安装Publish over SSH插件
系统管理→管理插件→可选插件→Publish Over SSH
插件配置
全局设置(Publish over ssh)
“系统管理>系统设置”中进行配置,如图:
参数说明
Passphrase:SSH的密码
创建ssh key时指定,本文创建ssh key时默认为空。故,此处为空,不填写。
Path to key:SSH私钥的文件路径
私钥文件的路径,可以是绝对路径,也可以是相对$JENKINS_HOME的相对路径
Key:私钥
私钥导出后的文本内容
如果“Key”和“Path to key”都设置,则“Key”的优先级较高
Disable exec:禁止在目标机上执行命令
SSH Server 配置
指定远程服务器的ip,存放目录。可以配置多个ssh server ,jenkins自动将打包成果发送到多个远程服务器。
配置完成后,可以 通过 “Test Configuration” 测试是否配置正确。
参数说明
Name
SSH节点配置的名称,在Job中使用Publish over SSH插件时,此名称将出现在“SSH Server”中“Name”的下拉列表中,如下图:
Hostname
通过SSH连接到的机器的主机名或IP
Username
SSH服务使用的用户名,使用key进行连接时为key指定的用户名
Remote Derictory
运程机器上真实存在的目录,并且“Username”指定的用户要有访问此目录的权限,插件将把文件传送到此目录下。
Publish over SSH 的应用
创建项目时,设置 构建环境,与Publish over ssh 的设置一一对应。
参数说明
Name:
下拉选择一个 系统设置已配置的名字。
Transfer Set Source files:
需要上传的文件(注意:相对于工作空间根目录。
工作区根目录配置:系统管理->系统设置->主目录->高级->工作空间根目录
看后面的配置可以填写多个,默认用,分隔,)
本例的工作区路径是:/var/lib/jenkins/workspace/wrapper-test
因此,此处可以填写:
**/*.tar
或
xinwei-wrapper-example/target/xinwei-wrapper-example-1.0-SNAPSHOT-bin.tar
Remove prefix:
Source files”配置的路径中要移除的前缀
即:xinwei-wrapper-example/target/
Remote directory:
远程目录,此目录是相对于“SSH Server”中的“Remote directory”的,如果不存在将会自动创建。
Exec command:
通过ssh连接远程服务器后,在远程服务器上执行的脚本。
本例子的脚本作用是:在远程服务器上解压 tar包,通过wrapper启动应用。
启动日志:
脚本见:
https://github.com/wzjgn/xinwei-example.git
xinwei-example/script/Publis over SSH
2.2、Post Steps
上一篇文章,也是通过Post Steps完成了本地项目部署、执行。
本文通过脚本的方式,拷贝项目包到远程服务器,执行远程脚本。
脚本文件见:
https://github.com/wzjgn/xinwei-example.git
xinwei-example/script/Post Steps(remote)
1、拷贝tar包到远程服务器
2、执行远程服务器脚本
三、Jenkins生产环境回滚
回滚的原理:
将历史构建的部署包备份,回滚时选择历史构建编号,重新拷贝部署包到远程服务器。
3.1、创建回滚任务
新建任务:
基本配置:
选择参加化构建,便于在触发回滚时指定回滚版本号。
参数设置:
参数说明:
建议选择Run Parameter,回滚时从下拉框选择回退版本号。
Name:任意名称,此名称是在下面的回滚构建脚本中以变量的方式使用。
Project:必须是构建列表里的名称,回滚脚本依赖该名称查找回滚的包。
源码管理
选择None
构建:
变量说明:
WrappeRollback:
对应Run Parameter中配置的名称。该变量的值是构建的包的默认存放地址。
BUILD_NUMBER:历史构建版本号。
脚本见:
https://github.com/wzjgn/xinwei-example.git
xinwei-example/script/Rollback
3.2、执行回滚
选择任务列表中的回滚任务:wrapper-test-rollbacke
选择回滚版本号,开始构建
构建日志:
将历史构建的包 scp 到待回滚的远程服务器,重启服务。
回滚操作完成。
四、git 分支构建
4.1、安装插件 Git Parameter
4.2、新建任务
配置构建参数
其他配置参数详见本文其他案例。
4.3、任务执行
如遇Jenkins基础配置问题,请翻看上一篇《Jenkins安装配置,项目发布、管理详解,史上最清晰,值得收藏!》
五、禅言慧语选闲
俄罗斯方块留给我们的感悟:
一开始留给你的时间很多,慢慢的就会感到时间紧促了;获得的成功总会消失,犯下的错误却会积累,走错一步要用几步来弥补;不要纠结于当前的错误,否则会错上加错。
珍惜时间,少犯错误,果断止损!
俄罗斯方块留给你的感悟呢?
欢迎留言!