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

[经验分享] jenkins持续集成

[复制链接]

尚未签到

发表于 2018-9-3 11:16:53 | 显示全部楼层 |阅读模式
  持续集成
第1章 行话
1.1 什么叫持续集成?           ---简称CI
  在公司中,开发人员每天上班克隆一个自己的分支,下班前将分支进行合并,但是随着开发人员越来越多,代码也越来越多,每天下班之前要花很长时间进行人工合并代码,为了解决这样的情况,将合并的周期缩短,以前每天合并,改为每小时或者没半小时进行合并,随时随地的将代码进行合并,这种方法叫做持续集成
  一句话:持续集成就是指,频繁的将代码集成到主干!
1.1.1 持续集成的好处:
  1.      快速的发现错误,没完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易
  2.      方式分支大幅度偏离主干,如果不是经常集成,主干又不断的更新,会导致以后集成的难度变大,甚至难以集成
1.2 什么叫做持续交付?         ---简称CD
  借助一个自动化的部署工具,jenkins
  当开发上传自己的代码到gitlab,gitlab发消息通知jenkins,随后jenkins从仓库拉取代码,最后全自动部署到测试服务器进行相关测试,并将测试结果通知运维和开发,这种方法叫做持续交付
1.3 什么叫持续部署?           ---简称CD
  持续部署是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境
  持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产进阶
第2章 jenkins介绍
  jenkins是一个用java编写的开源的持续集成工具,在与oracle发生争执后,项目从hudson项目独立出来
  jenkins提供了软件开发的持续集成服务,他运行在servlet容器中(例如apache,tomgcat)他支持软件配置管理,(SCM)工具,可以执行基于Apache ant和Apachemaven的项目,以及任意的shell脚本和windows批处理命令,jenkins的主要开发者是川口耕介,jenkins是在mit许可证下发布的自由软件
第3章 部署jenkins:
3.1 软件下载地址:
  官方仓库  https://pkg.jenkins.io/redhat-stable/
  清华大学开源软件镜像站  https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/
3.2 进行安装
  yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
  rpm -ivh jenkins-2.73.1-1.1.noarch.rpm
  /etc/init.d/jenkins start
3.3 安装插件
  [root@jenkins tools]# tar xfP jenkins_plugins.tar.gz
  [root@jenkins tools]# /etc/init.d/jenkins restart
3.3.1 rpm包安装的内容:
  [root@Jenkins ~]# rpm -ql jenkins
  /etc/init.d/jenkins         # 启动文件
  /etc/logrotate.d/jenkins    # 日志分割配置文件
  /etc/sysconfig/jenkins      # jenkins主配置文件
  /usr/lib/jenkins            # 存放war包目录
  /usr/lib/jenkins/jenkins.war   # war 包
  /usr/sbin/rcjenkins         # 命令
  /var/cache/jenkins          # war包解压目录 jenkins网页代码目录
  /var/lib/jenkins            # jenkins 工作目录
  /var/log/jenkins             # 日志
  配置文件说明:
  [root@Jenkins ~]# grep "^[a-Z]" /etc/sysconfig/jenkins
  JENKINS_HOME="/var/lib/jenkins"    #jenkins工作目录
  JENKINS_JAVA_CMD=""
  JENKINS_USER="jenkins"             # jenkinx启动用户
  JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
  JENKINS_PORT="8080"                # 端口
  JENKINS_LISTEN_ADDRESS=""
  JENKINS_HTTPS_PORT=""
  JENKINS_HTTPS_KEYSTORE=""
  JENKINS_HTTPS_KEYSTORE_PASSWORD=""
  JENKINS_HTTPS_LISTEN_ADDRESS=""
  JENKINS_DEBUG_LEVEL="5"
  JENKINS_ENABLE_ACCESS_LOG="no"
  JENKINS_HANDLER_MAX="100"          # 最大连接
  JENKINS_HANDLER_IDLE="20"
  JENKINS_ARGS=""
3.4 输入http://10.0.0.64:8080进入web管理界面
第4章 web界面安装:
4.1 查看解锁jenkins的密码:
  [root@jenkins secrets]# cat /var/lib/jenkins/secrets/initialAdminPassword
  8c85ece6417d4c229434b26eaa5806bd
DSC0000.jpg

1.1 输入密码登录后,会有安装插件的提示,先关闭页面,在安装完jenkins后安装插件
DSC0001.jpg

1.1 关闭安装插件后,选择开始使用jenkins
DSC0002.jpg

1.1 安装完成
DSC0003.jpg

1.1 安装jenkins插件:    ---系统管理---管理插件
DSC0004.jpg

  这里直接上传的软件包
  [root@jenkins tools]# tar xfP jenkins_plugins.tar.gz
  [root@jenkins tools]# /etc/init.d/jenkins restart
第1章 jenkins配置
  配置jenkins并发执行数量,提高执行效率
DSC0005.jpg

1.1.1 完成
DSC0006.jpg

1.1 设置邮件,在测试完成后,主动发送邮件通知测试情况
DSC0007.jpg

DSC0008.jpg

第1章 jenkins使用
1.1 创建一个新的任务
DSC0009.jpg

DSC00010.jpg

1.1 将jenkins与gitlab联合
  [root@Jenkins ~]# ssh-keygen
  Generating public/private rsa key pair.
  Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase):
  Enter same passphrase again:

  Your>  Your public key has been saved in /root/.ssh/id_rsa.pub.
  The key fingerprint is:
  SHA256:5SGYye8oxCKFJjddb4W8JC0RAQhBWCvuG8aZL8eMJs4 root@Jenkins
  The key's randomart image is:
  +---[RSA 2048]----+
  |==....=* ..      |
  |...o oo==.       |
  |+.= . =++.o      |
  |++ o   o.+ .     |
  |... o   S .      |
  |o.oo   o         |
  | B+ . . .        |
  |++++ .           |
  |+Eo.             |
  +----[SHA256]-----+
1.1.1 在gitlab中添加公钥信息
DSC00011.jpg

1.1.1 在jenkins中添加私钥
DSC00012.jpg

DSC00013.jpg

1.1.1 选择ssh密钥和证书,然后选择直接输入,将私钥复制到下框中即可
DSC00014.jpg

1.1.1 选择刚才创建的证书,完成后,选择构建
DSC00015.jpg

1.1.1 选择构建,拉到最底部,选择使用shell脚本
DSC00016.jpg

1.1.1 脚本内容:
DSC00017.jpg

1.1 创建测试环境
  [root@jenkins ~]# mkdir /data/www -p
  [root@jenkins ~]# chown -R jenkins.jenkins /data/www/
  说明:这里创建完目录后把站点目录的属主和属组都交给jenkins用户,因为jenkins程序运行是jenkins用户,要注意安全问题,各种服务都一样!
1.1.1 选择构建后,让每次构建完成后将结果发送给管理员
DSC00018.jpg

DSC00019.jpg

1.1 配置简单的测试项目完成
1.1.1 部署执行过程的日志   
DSC00020.jpg

  jenkins项目所在目录
  [root@jenkins oldboyedu]# pwd
  /var/lib/jenkins/workspace/oldboyedu
1.1 查看部署结果
  [root@jenkins oldboyedu]# ll /data/www/
  total 8
  -rw-r--r-- 1 jenkins jenkins  10 Mar 21 23:08 jiang.txt
  -rw-r--r-- 1 jenkins jenkins 782 Mar 21 22:24 README.md
第2章 配置更新代码以后自动上线自动部署
2.1 添加gitlab-token,配置gitlab认证
DSC00021.jpg

1.1.1 添加新凭证
DSC00022.jpg

1.1.1 从gitlab设置中将token复制过来
DSC00023.jpg

1.1.1 将复制的token粘贴到api token中,点击ok即可
DSC00024.jpg

1.1 系统全局配置连接上gitlab
DSC00025.jpg

1.1 打开项目,编辑项目的构建触发器
DSC00026.jpg

1.1.1 在gitlab上配置连接jenkins,将jenkins的secret token与URL复制到gtilab中
DSC00027.jpg

1.1.1 保存之前进行测试,测试成功后保存即可
DSC00028.jpg

1.1.1 在gitlab上上传文件,进行测试即可
DSC00029.jpg

1.1.1 在日志中显示是 Started by GitLab push by Administrator 即表示自动集成成功
第1章 代码上线解决方案:
1.1 合理化上线方案:
  1.      开发人员需在个人电脑的搭建LAMP环境测试开发好的网站代码,并且在办公室或者IDC机房的测试环境测试通过,最好有专职测试人员
  2.      程序代码上线要规定时间,这个上线时间需要从监控中分析数据得知,选择流量低的时段进行上线
  3.      代码上线之前需要备份,网站程序有问题方便回滚,另外,从上线技巧上讲,上传代码时尽可能先传到服务器中网站的临时目录,传完整后一步mv过去,或者通过做软链接的方法实现
  4.      尽量由运维人员管理上线,对于代码的功能性,开发人员更在意,对于代码的性能优化和上线后的稳定,运维更在意服务器的稳定,因此,如果网站宕机问题归运维管理,就要让运维上线,这样规范更科学,否则,开发随意更新,出了问题找不到根源
1.1 PHP程序代码上线的具体方案:
  对于php上线方法:发布代码时可以直接发布到正式线临时目录,然后mv或者更改林肯的方式发布到正式线上目录,不需要重启http服务,当然这也是新浪,赶集的上线方案
1.2 JAVA程序代码上线的具体方案
  对于java上线方法,较大公司需要分组平滑上线(如从负载均衡服务器上摘掉一般的服务器)发布代码后,重启服务器进行测试,没问题后,挂上上线好的一半,再换另外一半,如果前段有DNS智能解析,上线还可以分地区上线若干服务器,在逐渐普及到全国的服务器,这个被称为灰度发布
1.2.1 灰度发布:
  通过ip地址定位,地区,返回指定网页内容


运维网声明 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-561976-1-1.html 上篇帖子: jenkins+gitlab 快速部署 下篇帖子: jenkins 远程连接linux配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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