gmdzxx 发表于 2018-9-16 08:16:25

jenkins+Gitlab+maven+tomcat实现自动化集成、打包、部署。

  为什么需要持续集成呢?
  1.因为在开发的过程中,用于阶段性地构建出产品。
  这样可以更加清楚地审视产品的不足之处。
  2.由于在某些情况下,例如有紧急bug的时候,研发的版本更新可能很频繁,
  部署持续集成环境,可以减少每次部署所花费的时间。
  化整为零:
  1.这套组合可以分成源码管理、编译构建、远程部署
  2.源码管理常见的有gitlab、SVN
  3.编译构建是针对编译型语言的。
  此处针对Java语言使用Maven、针对IOS则是使用其他编译工具。
  4.远程部署由jenkins提供。
  基础环境
  192.168.254.134      Maven-3.5.4、Jenkins-2.133、Git-2.12.0、JDK1.8
  192.168.254.135      Gitlab-11.0.4
  192.168.254.131      tomcat9.0.10
  下载安装包(统一到opt目录)
  wget https://mirrors.cnnic.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
  wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.18.0.tar.xz
  (其他安装包 本人博客里面其他文章里面有下载地址)
  安装Gitlab
  Gitlab的作用:作为源码管理的角色。
  Gitlab实际上是整合了nginx、git等多种软件提供了一个可视化的界面。
  包含git命令的基本功能,但相比于git命令更加简单易用。
  安装gitlab和必要的依赖
  yum install curl openssh-server postfix
  systemctl enable sshd postfix
  systemctl start sshd postfix
  添加gitlab包服务器安装包
  curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
  yum install gitlab-ce
  3.配置并启动
  gitlab-ctl reconfigure
  gitlab-ctl status
  gitlab-ctl stop
  gitlab-ctl start
  4.浏览到主机名和登录Browse to the hostname and login

  初始化gitlab
  gitlab-ctl reconfigure
  有时候,像上面步骤修改了GitLab的ip地址一样,临时修改了GitLab的配置之后,得执行如下的命令,应用重新配好的配置并重启GitLab,然后查看GitLab的状态
  gitlab-ctl reconfigure
  gitlab-ctl retart
  gitlab-ctl status
  gitlab-ctl tail
  找到应该访问的地址
  vim /etc/gitlab/gitlab.rb
  external_url 'http://node.abc.com'
  注意:需要解析域名
  正常访问页面:

  安装maven
  Maven的作用:Maven负责java语言的编译和打包。
  换个角度来说,Maven相当于Java中的make命令。
  同类型的工具有Ant,但是Ant不提供解决依赖关系的功能
  获取安装包:镜像。
  https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
  解压tar包
  tar -zxf apache-maven-3.5.4-bin.tar.gz -C /usr/local/
  cd /usr/local/
  mv apache-maven-3.5.4 maven
  定义变量,输出执行路径
  vim /etc/profile   在最后面添加
  export M2_HOME=/usr/local/maven
  export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$M2_HOME/bin:$PATH
  source /etc/profile
  测试能否正常运行
  mvn -v
  Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
  Maven home: /usr/local/maven
  Java version: 1.8.0_171, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8/jre
  Default locale: zh_CN, platform encoding: UTF-8
  OS name: "linux", version: "3.10.0-862.3.3.el7.x86_64", arch: "amd64", family: "unix"
  安装jenkins
  Jenkins的功能:
  1.通过git命令从Gitlab中拉取源码
  2.让maven进行编译并打包
  3.把打好的包发送到目标主机
  4.执行部署脚本。
  之前有安装过http://blog.51cto.com/10158955/2146748
  #安装方式有多种,包括rpm、war包启动、dockerfile。
  安装完成后接下来配置ssh,也就是要上传的测试服务器ssh信息
  首先我们先要在jenkins服务器上生成秘钥,然后利用秘钥要进行免密登录
  在jenkins服务器上执行ssh-keygen -t rsa,一路回车就可以一路回车的话密码为空,这样就在/root/.ssh/下生成的两个文件id.rsa(私钥)和id.rsa.pub(公钥),我们需要把公钥的内容写到测试服务器(tomcat服务器上)的/root/.ssh/authorized_keys文件中如果没有就新建一个,接下来我们开始配置
  注意:
  su - jenkins
  ssh-keygen -t rsa
  ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.254.131
  jenkins默认是没有shell的
  usermod -s /bin/bash jenkins
  这是给jenkins加个bash
  或者su -s /bin/bash jenkins也可以
  远程服务器authorized_keys 要给644其他用户可以读
  编译安装新版的git
  注意:Maven、Git、JDK都是安装到jenkins服务器。
  在往后的设置中,需要在jenkins中指定他们的路径。
  获取源码包
  wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.18.0.tar.gz
  注意:为了能让jenkins能正常从gitlab中拉取源码,需要编译1.9以上的版本。
  git构建时,需要的环境
  yum groupinstall "Development Tools"
  yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker openssh-clients
  除了正常的编译环境之外,编译git的时候还要额外安装各种devel包。否则会构建失败。
  编译并安装,同时输出执行路径到环境变量中:
  make prefix=/usr/local/git all
  make prefix=/usr/local/git install
  echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
  source /etc/bashrc
  验证能否正常运行:
  git --version
  git version 2.3.0
  在jenkins上完成配置
  指定Maven、Git、JDK的安装路径



  为Jenkins安装配件:

  需要安装的插件:
  Gitlab Plugin
  #安装之后才可以在系统配置中指定gitlab的IP地址
  Git Plugin
  Git Client Plugin
  需要添加的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab
  #用于jenkins在gitlab中拉取源码
  Publish Over SSH
  #用于通过ssh部署应用
  Maven Integration plugin
  #用于新建maven项目
  注意 : 安装了插件之后,在全局配置才能详细配置。

  配置相关选项

  配置Gitlab的地址,红字表示需要Gitlab的账号密码,但是这个可以在新建项目的时候指定。



  Publish_over_SSH插件,可以使用Path to key指定jenkins主机的私钥路径,也可以如上。 注意:部署应用的主机需要jenkins主机的公钥,可以ssh-copy-id命令复制过去。

  配置需要部署应用的主机的IP地址及相关信息测试是否可以连接

  点击testconfiguration可以测试连接,如下图就是测试成功,说明我们现在已经可以使用jenkins连接服务器了
  现在jenkins已经可以和远程服务器通信了,但是还没和gitlab连通,接下来我们配置gitlab和jenkins的连通,首先先安装gitlab相关插件,关于插件安装上面已经写过
  在jenkins上新建项目
  注意:安装了Maven Integration plugin才可以创建maven项目
  配置maven打包仓库参考文章链接(在本人技术博客里面)
  http://blog.51cto.com/10158955/2153796

  之后到里面配置
  然后点击源码管理如下图,我们选择git,repository url写gitlab仓库的地址,credentials是指信任,我们需要在gitlab中添加jenkins的公钥 ,在下图的key中填写jenkins服务器的公钥,title处填写jenkins,然后在到jenkins上就可以看到credentials处可以选择jenkins了,然后点击构建触发器选项卡

  报错解决
  https://blog.csdn.net/zzpzheng/article/details/52132311
  gitlab使用webhook向jenkins发送请求,报错 Requests to the local network are not allowed
  即可进入Admin area,在Admin area中,在settings标签下面,找到OutBound Request,勾选上Allow requests to the local network from hooks and services ,保存更改即可解决问题












  测试Jenkins可以通过gitlab将服务推送到远程主机上。
  这里到远程机器上设置登陆账号
  cd /usr/local/tomcat/conf
  vi tomcat-users.xml
  
  
  
  
  
  启动tomcat


页: [1]
查看完整版本: jenkins+Gitlab+maven+tomcat实现自动化集成、打包、部署。