搜索
您的当前位置:首页正文

Jenkins+Gitlab+Maven+Tomcat 持续集成

来源:哗拓教育

持续集成:Continuous Integration,简称CI,意思是,在一个项目中,任何人对代码库的任何改动,都会触发CI服务器自动对项目进行构建,自动运行测试,甚至自动部署到测试环境。这样做的好处就是,随时发现问题,随时修复。因为修复问题的成本随着时间的推移而增长,越早发现,修复成本越低。当你想要更新你的项目,只要动手提交代码到你的代码仓库,剩余的更新部署操作就只管交由CI服务器来完成就好,这次使用的CI工具是JenKins。

Jenkins.jpg
  • 搭建Jenkins持续集成服务器可以分为两大步骤,一是在服务器安装好所需的软件,二是配置我们的持续集成项目

  • 安装所需的各种软件

    • 安装启动 Jenkins

      • 从Jenkins下载最新的rpm包
      执行命令 rpm -ivh xxx.rpm  安装Jenkins
      
      //启动JenKins
      /etc/init.d/jenkins start 
      
      浏览器输入 http://xxx服务器地址:8080/
      
      //默认端口号是8080
      
    Jenkins启动1.png JenKins启动.png
    • JenKins默认端口号是8080,这与Tomcat默认端口号冲突,所有我们可以把Jenkins的端口号改成我们自己定义的端口号 9090

      • 修改端口号的文件为 /etc/sysconfig/jenkins,字段为JENKINS_PORT

        执行命令进行修改,如果碰到无法启动Jnekins, 无法启动(如遇此Starting Jenkins bash: /usr/bin/java: No such file or directory错误 )修改 /etc/init.d/jenkins 加入 /opt/jdk1.8.0_181/bin/java原因
        是Java的环境变量没有找到,一般使用centos服务默认安装openjdk,如果自己卸载openJdk并重新安装sun的JDK,则也需要在该文件中加入路径,如图所示
        
        vim /etc/sysconfig/jenkins 
        
        //添加Java地址
        
        vim /etc/init.d/jenkins
        
        
      修改Jenkins端口.png 添加Java地址.png
  • 修改端口无法启动的情况,有可能是服务器防火墙没有添加端口的监听,导致无法访问

    vim /etc/sysconfig/iptables
    
    查看是否监听端口(如果配置了自己定义的端口,需要先访问该端口一次才能看到监听)
    
    netstat -ntlp
    
    //重启防火墙配置(不重启端口还是无法生效)
    service iptables restart
    
添加新监听的端口.png
  • 重启Jenkies

    //xxx:8080 是搭建Jenkins服务器地址
    http://xxx:8080/restart
    
    
  • 重新加载配置信息

 ```
 http://localhost:8080/reload
 ```
  • 安装jdk

```
查看Java相关的包信息: 
 rpm -qa|grep java (或rpm -qa|grep jdk,rpm安装后,包名里没有Java)
卸载 
yum -y remove java [包名] 
例如 
yum –y remove java java-1.8.0-openjdk-1.8.0.131-3.b12.el7_3.x86_64 

jdk 卸载方法 

//解压到指定目录
tar -zxvf jdk-8u181-linux-x64.tar.gz -C /opt/

//编辑配置文件
vim /etc/profile

export JAVA_HOME=/opt/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH 
  
//更新配置文件
source /etc/profile

```
  • 安装Tomcat

    • 直接解压到服务器(注意这里指的服务器是项目部署的服务器,应该是和部署JenKins的服务器不同)

    • 强制关闭 tomcat 命令

      //强制关闭
      ps -ef|grep tomcat
      
      //杀掉无法关闭进程
      kill -9 XXXX
      
      
  • 安装 git (安装在部署JenKins服务器上)

    安装依赖
    yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
    
    yum install  gcc perl-ExtUtils-MakeMaker
    
    如果已经安装了git,但是版本太老,可以先卸载
    yum remove git 
    
    下载git包解压
    tar -vxf git-2.15.1.tar.gz -C /opt
    
    进入git 目录
    cd /opt/git-2.18.0/
    
    执行以下命令
    
    make prefix=/usr/local/git all
    
    make prefix=/usr/local/git install
    
    echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile  //配置环境变量
    
    source /etc/profile //跟新配置文件
    
    git --version 查看git版本
    
    
安装git版本.png
- 安装 maven(安装在部署JenKins服务器上)
  -
  - 后台项目为spring-boot搭建,需要安装maven
  - 下载 [maven 3.5.4](http://maven.apache.org/download.cgi)
```
执行以下命令
tar -zxvf apache-maven-3.3.9-bin.tar.gz -C /opt

在/etc/profile文件末尾增加以下配置
M2_HOME=/opt/tyrone/maven (注意这里是maven的安装路径)
 export PATH=${M2_HOME}/bin:${PATH}
 
重载/etc/profile这个文件
  source /etc/profile 
```
[图片上传失败...(image-ae6fb0-1535116185320)]

- GitLab服务器配置
  -
  - 由于公司已经搭建好Gitlab服务器,所以我也没有配置过Gitlab,不过Gitlab配置网上已经有很多资料,可以自行百度。
  • Jenkins配置新建项目配置

    • Jenkins配置

      • 第一次进入Jnekins,首先根据提示找到安装服务器的密码

      • 在Jenkins系统管理模块的系统配置中配置我们的Gitlab,需要登录到Gitlab中获取APIToken

        系统配置GitLab.png 获取API Token.png GitLab API Token配置 .png
      • 生成ssh key(在部署Jenkins服务器上生成)

        • 配置SSH KEY ,用于后续项目可以通过Jenkins部署到应用服务器

          输入命令,一路回车
          ssh-keygen -t rsa 
          
          现在你的私钥被放在了~/.ssh/id_rsa 这个文件里,而公钥被放在了 ~/.ssh/id_rsa.pub 这个文件里
          
          可以将私钥配置到JneKins的系统设置中,配置框选项是需要Jenkins安装SSH插件的,如下图所示
          
          公钥则配置到各个应用服务器的这个目录下/root/.ssh/authorized_keys,没有authorized_keys则创建这个文件,如下图所示
          
          最后测试应用服务器是否都能成功连接,如下图所示
          
           
          
        ssh私钥配置.png 公钥复制到应用服务器authorized_keys.png 测试配置公钥的应用服务器是否连接成功.png
        • 接下来还是系统管理模块中的全局工具配置 Jenkins的 JDK、git和maven。前面我们已经把这些工具都给安装了,现在配置到Jenkins中,如下图所示

          配置Jenkins jdk git.png 配置Jenkins maven.png
    • 新建项目配置

      • 新建一个maven项目(没有maven项目选项则需要下载对应插件)
      新建maven项目.png
      • 首先配置源码管理,如图

        新建项目源码管理配置.png
      • 配置项目构建触发器

        配置项目构建触发器.png
      • 配置maven项目编译

        配置maven项目编译.png
      • 项目构建成功后部署应用服务器的配置

      项目构建成功后部署应用服务器的配置.png
      • Tomcat重启脚本(应当放在与Tomcat目录同路径下)

        #! /bin/sh
        echo '####################开始自动部署####################'
        export JAVA_HOME=/usr/local/jdk1.8.0_181
        path=`pwd` #当前路径
        tomcatPath=/data/XXXX/tomcat_gxxmt_8080 #指定tomcat文件目录名称
        cd ../$tomcatPath/bin #进入tomcat的bin目录
        PID=$(ps -fu `whoami`|grep tomcat|grep -v grep|awk '{print $2}')
        if [ -z "$PID" ];then
         echo "no tomcat process"
        else
        ./shutdown.sh #停止tomcat服务
        fi
        cd ../webapps #进入tomcat的webapps目录
        rm -rf XXXX-api
        echo '####################删除完成####################'
        #rm -fr gxxmt-api.war #删除test文件目录
        #mv gxxmt-api.war gxxmt-api.war.$(date +%Y%m%d) #备份webapps下的test16 cp $path/test.war ./ #复制test.war到webapps路径下
        #cd /var/lib/jenkins/workspace/gxxmt-api/gxxmt-api/target/
        #cp gxxmt-api.war /data/gxxmt/tomcat_gxxmt_8080/webapps/
        cd ../bin
        ./startup.sh #启动tomcat服务
        echo '####################部署结束####################'
        
      • 项目构建成功并发布到了对应服务器执行对应脚本,这里就可以看到JenKins的灵活性,可以配置多台发布的应用服务器的多个Tomcat,灵活自动部署应用服务器配置

      • 项目构建编译部署成功

        项目构建编译部署成功.png

最后

  • 到此,我们的持续集成服务器已经搭建完成,这时候你只要动手提交一下代码到你前面构建触发器设置的分支(一般为主分支),剩余的项目构建,部署等一系列重复繁琐的工作就交由Jenkins帮我们自动完成就可以了,省时又方便。文章中如果有错误,请大家给我提出来,大家一起学习进步,如果觉得我的文章给予你帮助,也请给我一个喜欢或者关注。

  • 参考链接:

Top