Jenkins+tomcat+maven+git 远程自动化部署

【真实环境需要4台机器,3台服务器,一台模拟开发开发代码的主机】

Jenkins服务器IP:10.132.20.10

Git服务器IP:10.132.20.104

远程tomcat服务器IP:10.132.20.15

【我这里是桥接的自己的真机,所以都在一个网段】

开始吧!

一、准备工作

  1. 需要的包有哪些,先看看

  1. Jenkins要和tomcat、git服务器相通,模拟开发的机器当然要和git服务器相通,这个可以自己去设置,防火墙什么的要注意

 

【注:这里防火墙真实环境不建议关闭,可以开启你需要的那个端口即可】

如下:

firewall-cmd --zone=public --add-port=8899/tcp –permanent

firewall-cmd –reload

firewall-cmd --zone=public --query-port=8899/tcp

 

 

二、安装jdk

1、都要有jdk才行,我放的目录是/usr/bin

解压:tar zxvf jdk-…..tar.gz

设置环境变量:编辑/etc/profile文件

之后要:source /etc/profile ,使环境变量生效

三、Jenkins服务器

 

1、Jenkins服务器如果和tomcat是分开部署的,那么没必要在这台机器上再部署tomcat了,直接下载个jenkins的rpm包用rpm格式安装

(1)rpm  -ivh jenkins-2.7.1-1.1.noarch.rpm   

(2)、修改配置文件:sudo vim /etc/sysconfig/Jenkins

JENKINS_HOME="/root/.jenkins"(我将主目录修改在之前安装的目录中)

JENKINS_USER="root"

JENKINS_PORT="9161"

 

(3)、启动Jenkins

Sudo Service Jenkins start

若出现启动失败:Vim /etc/init.d/Jenkins

****添加的是你本台机器上的Jdk的位置*****

 

打开HTTP://10.132.20.100:8899 即可访问Jenkins

 

然后安装Jenkins【我这里原来出现了offline的情况,Jenkins是可以连接上外网的,可就是加载不了插件,结果后面解决了,应该是目录混了机器找不到的问题,后来重新装了一遍就行了】

 

2、接下来安装git

解压,然后进入git主目录,先查看哈里面的INSTALL或者README文件,里面查看是那种编译安装方法,我用的是:


        $ make configure ;# as yourself
        $ ./configure --prefix=/usr ;# as yourself
        $ make all doc ;# as yourself
        # make install install-doc install-html; 
# as root  **用root用户操作

 

【如果提示没有命令,在网上搜一下,安装好命令】

yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

接下来配置环境变量,上面已经贴上了。【记得编辑完后要source

接下来检验下:git –version

 

3、安装maven

下载,解压,tar zxvf apa…-maven-..tar.gz

然后配置环境变量,也在上面

用mvn –version查看是否成功

 

4、安装必要的插件在,jenkins上

如GIT plugin 、Deploy to container Plugin、Maven Integration【装了在创建项目的时候,才有‘创建一个maven项目’】

还有一些自己看着装,网上也有教程

 

接下来配置JDK 、GIT、maven的路径

系统管理–>Global Tool Configuration

还有Jenkins Location,填一下

接下来,注册个用户admin

退出,再登的时候,右上角点击注册,再登陆这个账号

 

5、查看机器上有没有SSH服务,远程操作免密登陆,如果有的话就不用安装了

rpm -qa | grep ssh  【查看是否有ssh

若没有:yum install openssh-server

service sshd start

 

创建一个用户fll,【在需要远程的机器上也创建个用户,名字最好相同,设置密码(一定要)】切换到用户fll然后,

ssh-keygen  –t  rsa,一路回车,表示,不设置密码   【window机器命令相同

ssh-copy-id 远程用户@远程服务器的域名或者IP

这个在后面Jenkins上远程git和tomcat有用

 

四、安装gitlab

 

curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null

新建 /etc/yum.repos.d/gitlab-ce.repo,内容为

[gitlab-ce]

name=Gitlab CE Repository

baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/

gpgcheck=0

enabled=1

 

 

sudo yum makecache   //把镜像从网上下载下来缓存到本地

sudo yum install gitlab-ce

 

修改gitlab的访问端口:编辑/etc/gitlab/gitlab.rb文件

一下是我这个文件的修改情况:

启动关闭gitlabsudo gitlab-ctl start/stop/restart

接下来试着访问gitlab:http://10.132.20.104:11000/

 

创建用户,要记住你创建的账号密码,后面有用。创建一个仓库,像这样

 

五、在模拟的开发主机上

1、创建一个maven项目。

先下载Windows的maven包,解压,然后,添加环境变量MAVEN_HOME和path就行,

照着网上的教程新建一个maven项目,里面随便添加一些包和class文件(最重要的是里面自带的pom文件)

2、为了可以免密码登陆到gitlab上,所以要在开发主机的命令行生成SSH【检验是否成功,在你的当前用户根目录下的.ssh文件夹下查看是否存在密钥和公钥文件】,打开公钥文件复制

打开你的gitlab,settings里面有个SSH keys,添加,并且把公钥复制进去

 

3、下载git,Windows版

下载好后,在所有程序找到GIT,然后打开git bash,切换目录到你项目的跟目录下。

 

1)第一个需要配置的就是用户的用户名和email,因为这些内容会出现在你的每一个提交(commit)里面的

$ git config --global user.name "your name"
$ git config --global user.email "your_email"

例如:“t_full@channelsoft”就是你注册在gitlab上的那个邮箱

<3>输入git init 
<4>输入git remote add origin 你刚才建立的项目连接 
<5>输入git add . 
<6>输入git commit –m ‘over’
<7>输入git config http.postBuffer 524288000 (特别提醒: 此行是在本地设置缓存, 有些项目文件较大, 使用http无法上传,可设置此命令
<8>输入git push -u origin master 将代码推送到gitlab

【git status查看当前上传状态】

 

【更加详细的上传操作,参照:

http://blog.163.com/wujiaxing009@126/blog/static/7198839920176275715927/

 

这时,你在你的gitlab上可以看到你的maven项目了。

 

 

接下来在Jenkins上创建一个maven项目,试一下:

1、URL那里填,你项目的地址,直接复制过来;

Credentials那里,要退出去,在首页的Credentials那里ADD一个登陆gitlab的凭证:

 

 

然后,你就可以在那个位置添加你的凭证了。

【另一种方法在文章最后有介绍】

 

接下来就是构建触发器,详细的自己去理解很简单,这里我写的是:

然后是build,maven要执行的操作

这里的Pom文件就相当于,ant里面的build.xml文件

下面那个是mvn的命令,详细的自己去找

 

接下来是,构建后操作:

 

我打的war包的名字是quit.war,在项目根目录下的target目录下,所以这里这么填。

下面那个是执行的shell语句

 

哦哦还忘了个事情就是还没模拟远程tomcat。

 

六、tomcat服务器

1、下载tomcat的包,解压,记得要配置jdk

配置tomcat的端口,不细说了,

 

七、jenkins上的ssh

接下来就是在Jenkins上用root创建个SSH,方法和之前说的一样,

然后再Jenkins界面上的系统配置中:

密码那里如果没有密码,则为空,有的话就填进去;下面那个是私钥的地址和内容

 

接着,回到你刚才没建完的maven项目,name那里就选择你才创建的那个名字。

 

 

 

最后在Jenkins上运行,结果为成功,代表可以了

 

结束。

 

 

以下是我最后出现的错误的解决方法:

打好包之后,无法将包发到远程tomcat上:

解决思路:

在Jenkins上用root账号,生成密钥,发到远程tomcat。在系统设置里面配置publish over ssh,填好刚才的私钥。

再添加-构建后操作,

 

出现错误:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

在tomcat服务器上编辑文件/usr/local/tomcat/bin/catalina.sh

 

解决思路:

正文前添加:

export JAVA_HOME=/usr/local/jdk1.8.0_151

export JRE_HOME=/usr/local/jdk1.8.0_151/jre

 

【你这里填的应该是,你的tomcat的jdk目录,不要填错】

 

 

 

 

问题1:

前面在连接gitlab的时候,用git开头的那个不行,只能用http

解决方法:

在Jenkins访问git的那个用户的SSH的私钥,复制到Jenkins上的Credentials 上,选择有SSH的那个:

还有权限问题:将仓库的权限改成777,这样这个仓库对fll005这个用户才不是只读的。

首先了解,在gitlab上创建的仓库,在git上的位置在哪里:

/var/opt/gitlab/git-data/    【目录下会有你创建的所有仓库以及项目】

把权限改成777。

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐