使用jenkins自动从gitlab中检出代码并maven打包发布到远程tomcat服务器

前面已经搭建好了gitlab,并且已经实现了jenkins从gitlab中检出代码的功能.下面继续做.

jenkins 2.0中,好像不直接支持maven了,看不到maven的相关选项.必须要安装一个插件才可以.

在插件管理中,找到Maven Integration plugin插件并安装.然后配置一下maven.

我一开始找了好久,也没找到关于jdk,maven,git等这些东西在哪里配置. 1.X的时候,这些是在系统管理的系统设置里面. 2.X变掉了. 2.X是在 “系统管理->Global Tool Configuration”里面.一开始没注意这个选项.给忽略掉了.jenkins的本地化做的不太好.一些中文一些英文.我很容易就把这个给忽略了.哎.

由于后面我们还需要把打好的包分发到远程的服务器.所以这里还要再安装一个Publish Over SSH插件.这样的话,我们就可以在jenkins配置中直接使用远程拷贝了,把包直接拷贝到远程服务器.

15AA8867-D51C-4B23-9842-D67FADE96018然后就可以看到一些常用工具的配置了.

jenkins-global-tool-config

 

这些常用的工具,jenkins都提供了自动安装.比如maven,你如果勾了自动安装,可以选择版本.然后jenkins会自动帮你安装好.不是很推荐这样做.因为有的时候,可能会有问题.

maven name这里,可以写maven-3.2.5加上版本的名字,这样的话,如果有多个maven版本,更容易区分是哪一个.下面指定maven home就可以了.

下面接着之前的,配置我们的任务就可以了.

1DA71FB7-AF36-4E6C-91BC-7473EB00EA66

选到构建这里.选择增加构建步骤里的 “invoke top-level maven targets” 首先选择maven的版本,就是我们在前面配置的maven的名字.我前面写的是maven.然后goals写上要执行的maven命令.比如原命令是

那么这里就要写clean package.即省略掉前面的mvn命令.只写后面的选项.下面是一些高级的选项.可以忽略.

 

下面就需要把maven打好的包分发到远程服务器了.因为我们这里使用的是Publish Over SSH插件.所以要配置一下ssh信任.

登陆到jenkins所在的服务器.切换到普通用户或者是jenkins用户,当然也可以不切换.安全起见,最好是用普通用户的key

回到jenkins,切换到”系统管理->系统设置” 找到”publish over ssh”的设置

jenkins-config-copy-over-ssh

主要的配置有以下几项.

Passphrase: 刚才创建密钥的时候,输入的密码,如果没有输入密码.这里留空.

Path to key: 私钥的保存位置,刚才我们把key拷贝到了jenkins工作目录下的sshkey/id_rsa.这一项可不写,可以直接把key的内容填到下面一栏中.两者可二选一.

Key : 私钥的内容.如果上面的没写的话,这里一定要写.和上面的选项是二选一的.也可以2个都给.

SSH Servers: 远程服务器相关配置,也就是我们要把程序发布到的那一台机器的相关配置.主要配置有

Name: 起一个名字,方便后面配置发布的时候,选择服务器.

Hostname: 远程服务器的IP地址,如果写远程的主机名的话,要在jenkins的hosts文件中加映射.

Username: 刚才把公钥拷贝以远程服务器的时候的那个用户名,即刚才的ssh-copy-id命令后面跟的用户名.

Remote Directory: 要把文件发布到远程机器的哪一个目录.

还可以点下面的增加,再增加一台服务器.配置都是一样的.我这里就只有一台机器,所以就选择了一台.

回到项目配置中,找到”构建后操作”

jenkins-config-copy-over-ssh-real-config

这里主要的配置项就是

sshServer 选择一个要发布的服务器,这里是前面已经添加好的服务器的名字.

source files: 要拷贝到远程的文件.这里的相对路径是相对于jenkins的WORKSPACE的.即jenkins的工作目录.

remove prefix: 这里是一个要注意的地方,前面写的source files是 target/${JOB_NAME}.war,如果这里的remove prefix为空,则jenkins会在远程服务器上面创建一个target的目录,然后把文件放进去.如果不想要target目录,这里就要写target.

remote directory: 把文件放在远程服务器的哪个位置.因为前面配置服务器的时候已经配置过了位置 ,所以这里可以忽略 .

exec command: 把文件拷贝到远程服务器之后,要在远程服务器执行的命令,如果没有命令可以不写.因为我这里要先把远程服务器的tomcat给停止掉,再启动,所以简单写了2条命令,最好是写一个脚本然后这里调用脚本更严谨一些.

配置完以上,点保存就可以了.

构建一次看下结果

jenkins-all

  2 comments for “使用jenkins自动从gitlab中检出代码并maven打包发布到远程tomcat服务器

  1. 潘强
    2017 年 1 月 23 日 at 13:04

    你好!请问你的jenkins本地化是怎么做的?扒相关的配置……

    • honway
      2017 年 2 月 20 日 at 22:35

      jenkins可以根据你的浏览器自动本地化.不过完全.我的没做本地化.官方有相关的说明,你可以看一下

发表评论

电子邮件地址不会被公开。 必填项已用*标注