Jenkins+Ant+SSH 实现自动打包部署更新服务器项目

背景

在之前负责的项目中,项目的日常维护、开发、打包以及更新都是我和其他同事完成,而该项目需要部署的服务器比较多,再加之远程服务器的时候网络比较卡顿,这就浪费了大量的时间,所以就想到了该工具的使用。

下载

官方下载链接:https://jenkins.io/download/,选择下载war包即可。

启动以及初始化

将下载的war包放到tomcat下的webapp中,启动即可。如果没有修改默认端口,在浏览器访问localhost:8080/jenkins 检查是否启动成功,第一次启动时消耗的时间比较长,请耐心等待,直到出现如下图中所示则启动成功

第一次启动成功之后,根据图中给出的文件路径,将此文件中的密码填写到上图中,点击确认之后又得等待一段时间,直到出现如下图所示页面,

上图中有两个选项,Configure Proxy表示会将所有插件下载到本地,默认目录在C:\Users\Administrator\.jenkins\plugins目录下面,选择此项就比较慢,需要耐心等待; 后面那个选项代表跳过此步骤,遇到需要使用的插件时再手动安装,此步完成后进入下图所示页面

填写提交完以后进入Jenkins主页面

在这里顺便创建一个新任务,点击创建一个新任务,进入如下页面

第一个项目的名称就叫做helloworld吧,然后选择第一项创建一个自由风格的软件项目,然后点击ok

插件配置

安装必要插件,如下图1中Avaliable表示可以安装的所有插件,其中Folders Plugin是Jenkins运行的必要插件,Publish Over SSH、SubversionPlug-in、AntPlugin和JDKTool等插件是在后续工作中需要用到的

此外也可以在此页面中选择Advanced模块,在此模块下指定插件所在本地的位置进行加载,如下图

安装完插件,进行插件的配置,在这里我用到的插件有Ant和jdk,如下图:

远程连接用到了ssh,首先我们使用POWERSHELL Server 2016和Putty进行测试配置来打通服务器和客户端之间的连接,首先下载powershell和putty,下载地址分别为https://www.nsoftware.com/powershell/server/download.aspx和https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html,下载安装完成后,启动PowerShell,选择已有的证书/密钥或者新生成都可以,将新生成或者已有的证书填入证书存储区位置,如果设置了密码将密码填进去,ssh默认端口是22,可以在下面将端口改为其他

证书放到如下

选择SFTP模块,如下图路径是客户端上传给服务器项目后的默认存储路径,也可以自己指定路径

选择安全模块,ssh服务有密码和公钥密钥认证两种启动方式,在这里着重介绍使用公钥认证方式,使用公钥认证方式需要将客户端生成的公钥上传到服务器端,并且在如下图中最下面选择公钥在服务器端的位置,这里选择启用公钥认证,然后点击启动

检验ssh服务器客户端之间是否打通。在客户端启动PUTTYGEN.EXE,点击如下图中红框内摁键生成公钥和密钥,在该页面空白处不停地移动鼠标可以加快公钥和密钥生成速度,生成以后可以选择输入密码,并且将生成的公钥上传到服务器,将密钥保存到本地

然后打开PUTTY.EXE,填写远程地址以及端口,如下图:

选择SSH下的Auth,并且将保存在本地的密钥填入如下图中红框内,然后点击open

如果配置都正确,则会弹出一个命令框,如果在生成公钥密钥后设置了密码,那么在命令框中输入任意用户名以及设定的密码

如果出现上图中内容,则证明ssh测试通过,接下来需要在jenkins中配置ssh,安装publish over ssh插件,然后在系统管理下的系统设置中找到ssh模块并填写生成公钥密钥时设置的密码、远程连接地址、远程用户名以及密钥所在位置,点击Test Confinguration,如果显示success则连接成功,否则连接不成功检查配置信息,如下图所示:

如果是账号密码连接则需要填写如下图所示信息:

选择自己的项目,点击项目下的configure进行配置,如下图中设置的目录为项目打包保存的地址:

设置svn服务器地址,填写svn中自己的用户名密码,如下图:

设置触发器和打包环境,并且指定Ant打包使用的xml文件位置,如下图:

设置需要上传的文件以及需要执行的脚本文件,Source files为项目在客户端的位置(此处为相对路径,就是相对于上文中自己设置的工作空间的路径),remove prefix为去掉目录前缀(如文件目录为hello\test.war,前缀为hello\,则上传到服务器的文件为test.war),Exec command指定的路径为脚本文件在服务器上的路径;

设置完成点击保存,然后选择构建立即构建,下面#46是最新构建的一个项目,构建项目时可以点击Console Output查看输出日志检查项目是否构建成功,

我自己编写的这个脚本包括了备份、将上传的项目复制到tomcat下的webapp、重新启动该服务等等一系列任务,若出现如下图所示内容则代表大功告成,项目已经备份更新重启 。

建议

服务器启用ssh服务时最好不要使用默认端口,服务器中的脚本文件的执行权限也应考虑周全

你可能感兴趣的:(Jenkins+Ant+SSH 实现自动打包部署更新服务器项目)