设为首页 收藏本站
查看: 1558|回复: 0

[经验分享] jenkins+Gitlab+maven+tomcat实现自动化集成、打包、部署。

[复制链接]

尚未签到

发表于 2018-9-16 08:16:25 | 显示全部楼层 |阅读模式
  为什么需要持续集成呢?
  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
DSC0000.jpg

  初始化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'
  注意:需要解析域名
  正常访问页面:
DSC0001.jpg

  安装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的安装路径
DSC0002.jpg

DSC0003.jpg

DSC0004.jpg

  为Jenkins安装配件:
DSC0005.jpg

  需要安装的插件:
  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项目
  注意 : 安装了插件之后,在全局配置才能详细配置。
DSC0006.jpg

  配置相关选项
DSC0007.jpg

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

DSC0009.jpg

DSC00010.jpg

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

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

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

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

  报错解决
  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 ,保存更改即可解决问题
DSC00015.jpg

DSC00016.jpg

DSC00017.jpg

DSC00018.jpg

DSC00019.jpg

DSC00020.jpg

DSC00021.jpg

DSC00022.jpg

DSC00023.jpg

DSC00024.jpg

DSC00025.jpg

DSC00026.jpg

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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-584338-1-1.html 上篇帖子: JENKINS删除插件 下篇帖子: 通过Jenkins与Docker构建CI/CD基础架构
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表