jenkins持续集成

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins持续集成相关的知识,希望对你有一定的参考价值。

持续集成

第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 antApachemaven的项目,以及任意的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 安装插件

[[email protected] tools]# tar xfP jenkins_plugins.tar.gz

[[email protected] tools]# /etc/init.d/jenkins restart

3.3.1 rpm包安装的内容:

[[email protected] ~]# 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             # 日志

配置文件说明:

[[email protected] ~]# 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的密码:

[[email protected] secrets]# cat /var/lib/jenkins/secrets/initialAdminPassword

8c85ece6417d4c229434b26eaa5806bd

技术分享图片

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

技术分享图片


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

技术分享图片

1.1 安装完成

技术分享图片

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

技术分享图片

这里直接上传的软件包

[[email protected] tools]# tar xfP jenkins_plugins.tar.gz

[[email protected] tools]# /etc/init.d/jenkins restart

第1章 jenkins配置

配置jenkins并发执行数量,提高执行效率

技术分享图片

1.1.1 完成

技术分享图片

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

技术分享图片

技术分享图片

第1章 jenkins使用

1.1 创建一个新的任务

技术分享图片

技术分享图片

1.1 jenkinsgitlab联合

[[email protected] ~]# 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 identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:5SGYye8oxCKFJjddb4W8JC0RAQhBWCvuG8aZL8eMJs4 [email protected]

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中添加公钥信息

技术分享图片

1.1.1 jenkins中添加私钥

技术分享图片

技术分享图片


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

技术分享图片

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

技术分享图片

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

技术分享图片

1.1.1 脚本内容:

技术分享图片

1.1 创建测试环境

[[email protected] ~]# mkdir /data/www -p

[[email protected] ~]# chown -R jenkins.jenkins /data/www/

说明:这里创建完目录后把站点目录的属主和属组都交给jenkins用户,因为jenkins程序运行是jenkins用户,要注意安全问题,各种服务都一样!

1.1.1 选择构建后,让每次构建完成后将结果发送给管理员

技术分享图片

技术分享图片

1.1 配置简单的测试项目完成

1.1.1 部署执行过程的日志    

技术分享图片

jenkins项目所在目录

[[email protected] oldboyedu]# pwd

/var/lib/jenkins/workspace/oldboyedu          

1.1 查看部署结果

[[email protected] 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认证

技术分享图片

1.1.1 添加新凭证

技术分享图片

1.1.1 gitlab设置中将token复制过来

技术分享图片

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

技术分享图片

1.1 系统全局配置连接上gitlab

技术分享图片

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

技术分享图片

1.1.1 gitlab上配置连接jenkins,jenkinssecret tokenURL复制到gtilab

技术分享图片

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

技术分享图片

1.1.1 gitlab上上传文件,进行测试即可

技术分享图片

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地址定位,地区,返回指定网页内容


以上是关于jenkins持续集成的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins+Gitlab实现持续集成

持续集成之jenkins2

如何在CentOS下安装部署Jenkins持续集成环境

Jenkins——持续集成介绍及Jenkins安装部署(插件+用户权限+凭据+Maven打包)

Jenkins持续化集成

Jenkins持续集成