前言

     1 由于是自己学习,没有那么多服务器,所以自己安装了vmware虚拟机,准备了3台centos7.4服务器,分别用来作为gitlab、jenkins、tomcat应用服务器;

     2 本人使用的是mac操作系统,某些内容会和windows不一致,但是思想基本相同;

     3 其实自动部署部分比较关键的是shell脚本的编写,脚本调试好了,基本就可以完成了。


一、centos安装以及配置

      1 镜像下载地址网上有很多,这里推荐阿里云镜像地址:http://mirrors.aliyun.com/centos/7/isos/x86_64/

      2 安装完成之后,需要配置网络这里就按照步骤给大家看一下我的配置:

         a . mac与虚拟机之间的网络适配器采用的是NAT模式;

         b . vim /etc/sysconfig/network-scripts/ifcfg-ens33 编辑网络配置

           基于gitlab+jenkins+tomcat的java项目自动化部署

          关于ip地址的配置,需要配置在虚拟机安装时允许的配置范围之内,这里mac可以使用: 

          cat  /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf 查看虚拟机允许的ip地址范围;

           基于gitlab+jenkins+tomcat的java项目自动化部署

          range后面的地址范围就是虚拟机可配置的地址范围;

           网关、NETMASK、DNS都需要自己根据自己的网络信息配置,DNS可以选择一个公共的,这里在网上找了一个             114.114.114.114

         c . 开启远程ssh连接

            首先,要确保CentOS7安装了  openssh-server,在终端中输入  yum list installed | grep openssh-server,如果又没任何输出显示表示没有安装  openssh-server,通过输入  yum install openssh-server

           开启 sshd: service sshd start

        d . 防火墙配置:

            查看防火墙状态:systemctl status firewalld

            开启防火墙:systemctl start firewalld

            关闭防火墙:systemctl stop firewalld

            这里防火墙没有做永久关闭设置,每次重启虚拟机之后需要重新关闭;

            以上都设置完成之后,可以重启网络:service network restart 重启成功之后即可查看配置是否成功(这里可以ping www.baidu.com)能够ping通代表你配置成功,并且可以远程连接虚拟机了;

       e .  java环境配置(ps:因为后面服务环境都需要java环境,所以这里也把java环境配置好,后面虚拟机直接克隆就好啦)

              查看是否已经自带java环境:yum list installed |grep java

              如果有的话,卸载自带的java环境:yum -y remove java-1.8.0-openjdk* yum -y remove tzdata-java*

              查看yum仓库中的jdk:yum -y list java*

              安装:yum -y install java-1.8.0-openjdk*

              查看 java路径:which java

              ls -lrt /usr/bin/java(也就是上一步查询出来的路径)

             输入ls -lrt /etc/alternatives/java(也就是上一步查询出来的路径),然后回车

             从路径中可以看到在jvm目录下,输入cd /usr/lib/jvm,跳转到jvm的目录

             输入ls 列出当前目录下的文件和文件夹

             配置Java环境变量

             输入vi /etc/profile去编辑环境变量

             export JAVA_HOME=/usr/lib/jvm/java-1.8.0

             export JRE_HOME=$JAVA_HOME/jre

             export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

             export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

             输入source /etc/profile,使配置立即生效

             检查Java安装和配置情况 输入java -version;

             安装完成之后,克隆2台服务器,克隆的2台只需要修改ip地址,然后重启就可以了;

二、安装jenkins

       1 我这里的安装方式是采用的war包的方式,部署在tomcat服务器中;

         jenkins.war下载地址:https://pkg.jenkins.io/ 官网地址,但是下载速度非常慢,可以考虑其它资源,但是比较难找(我下了好久才下载完,真是等的花都谢了);

        tomcat的安装,我这里使用的是wget的方式,下载到/usr/local 下面: wget               https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.58/bin/apache-tomcat-8.5.58.tar.gz

       将jenkins.war包拷贝到tomcat下面的webapps中,启动tomcat既可;

       访问地址:http://192.168.148.131:8080/jenkins

       初始登陆密码位置: cat /root/.jenkins/secrets/initialAdminPassword (好像是这边,记不清了)      

       登陆成功之后可以重新设置账户密码以及可以添加用户;

      2 以上设置好之后就成功安装jenkins 了,然后就是插件的安装了,使用默认源的话下载插件的速度超级慢;默默用了网上说的修改插件下载地址:

      基于gitlab+jenkins+tomcat的java项目自动化部署     

       地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

       个人感觉这样配置之后依然很慢,不能从根本解决问题,有什么更好的方式吗?

       关于插件后续需要用户maven、ssh、gitlab、local(如果想汉化的话),应该还有很多,根据项目情况选择安装;

三、安装gitlab

      这里需要使用另外一台独立gitlab服务器啦,运行内存2G以上,不然运行不起来!gitlab团队人数在5人以及以下时免费,超过时需要收费(还没有试过,不过这不重要啦);

    1 环境准备:需要安装配置ssh环境

    2 下载安装包,官网下载非常慢,这里推荐清华云:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/ 可选择自己需要的版本;

    3 安装gitlab,rpm -i gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm,需要对应到自己下载的版本,安装成功之后会出现以下图样:

       基于gitlab+jenkins+tomcat的java项目自动化部署

     安装过程中可能会报错,需要根据报错情况来调整;

    4 修改gitlab配置文件指定服务器ip和自定义端口:vim  /etc/gitlab/gitlab.rb

    5 重置并启动GitLab

      执行:gitlab-ctl   reconfigure

                gitlab-ctl   restart

     启动成功之后可根据配置的地址以及端口信息访问gitlab,提交代码等操作基本和github一致,对应的也是需要配置sshkey等信息;

四、jenkins+gitlab联调

   准备:jenkins需要安装好maven,3台服务器之间ssh免密连接需要配置,应用服务器需要配置tomcat;

  1 因为是java项目,所以在jenkins中创建一个maven项目:

    基于gitlab+jenkins+tomcat的java项目自动化部署

    参数化构建,这里需要提取一定的参数和选项,为后续回滚和发布作准备:

     基于gitlab+jenkins+tomcat的java项目自动化部署

    基于gitlab+jenkins+tomcat的java项目自动化部署

     基于gitlab+jenkins+tomcat的java项目自动化部署

       基于gitlab+jenkins+tomcat的java项目自动化部署

       基于gitlab+jenkins+tomcat的java项目自动化部署      

        关于shell脚本:

        基于gitlab+jenkins+tomcat的java项目自动化部署

       基于gitlab+jenkins+tomcat的java项目自动化部署

      完成之后的项目jenkins界面:

      基于gitlab+jenkins+tomcat的java项目自动化部署

     需要注意的是:提交代码的时候需要打tag版本,没有tag版本的时候需要创建tag版本,然后提交的时候以对应的tag版本提交;

     新增tag版本:git add -a "v1.8.1" -m "版本v1.8.1"

     提交代码:git push origin v1.8.1  push的时候带上tag版本。

     ps:shell脚本第一次写,一脸懵逼的写完了;调试过程中,各种错误,场面惨不忍睹,最终还是完成了;这里仅仅是war包的发布,如果是涉及到springboot的项目还需要再进行调整,当然springboot项目也可以打成war包部署;还没有尝试过使用jar包的方式,有时间再试试jar包的方式;

     第一次写博客,仅以此记录我的学习之路。。。

相关文章: