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 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 安装插件
[[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 将jenkins与gitlab联合
[[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,将jenkins的secret token与URL复制到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持续集成的主要内容,如果未能解决你的问题,请参考以下文章