• 一、什么是持续集成?

(1)Continuous integration(CI)

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

(2)没有持续集成

项目做模块集成的时候,发现很多借口都不通==>浪费大量时间

需要手动去编译打包最新的代码==>构建过程不透明

发布代码,上线,基本靠手工==>脚本乱飞

(3)持续集成最佳实践:

维护一个单一的代码库

使构建自动化

执行测试是构建的一部分

集成日志及历史记录

使用统一的依赖包管理库

每天至少集成一次

(4)jenkins介绍

Jenkins只是一个平台,真正运作的都是插件。这就是jenkins流行的原因,因为jenkins什么插件都有 
Hudson是Jenkins的前身,是基于Java开发的一种持续集成工具,用于监控程序重复的工作,Hudson后来被收购,成为商业版。后来创始人又写了一个jenkins,jenkins在功能上远远超过hudson

Jenkins官网:https://jenkins.io/

(5)部署代码上线流程:

1.代码获取(直接了拉取)

2.编译 (可选)

3.配置文件放进去

4.打包

5.scp到目标服务器

6.将目标服务器移除集群

7.解压并放置到Webroot

8.Scp 差异文件

9.重启 (可选)

10.测试

11.加入集群

  • 二、jenkins部署

()安装JDK
[root@linux-node2 ~]# yum instsall -y java-1.8.-openjdk java-1.8.-openjdk-devel ()下载jenkins的rpm包
[root@linux-node2 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.32.3-1.1.noarch.rpm
---- ::-- https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.32.3-1.1.noarch.rpm
正在解析主机 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.6.178, :f000::::::
正在连接 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.6.178|:... 已连接。
已发出 HTTP 请求,正在等待回应... OK
长度: (66M) [application/x-redhat-package-manager]
正在保存至: “jenkins-2.32.-1.1.noarch.rpm” ()安装jenkins
[root@linux-node2 ~]# rpm -ivh jenkins-2.32.-1.1.noarch.rpm
警告:jenkins-2.32.-1.1.noarch.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID d50582e6: NOKEY
准备中... ################################# [%]
正在升级/安装...
:jenkins-2.32.-1.1 ################################# [%] ()启动jenkins
[root@linux-node2 ~]# service jenkins start
Starting jenkins (via systemctl): [ 确定 ] [root@linux-node2 ~]# netstat -tulnp|grep
tcp6 ::: :::* LISTEN /java
浏览器访问:192.168.56.12::如图
[root@linux-node2 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
8addd06f53f6405da6133356af1ca3b0 #登陆界面有提示输入密码,初始密码文件为/var/lib/jenkins/secrets/initialAdminPassword 友情提示:jenkins如果跟gitlab在一台服务器需要将jenkins的端口进行修改,需要将jenkins的8080修改为其他端口

安装所有插件:

安装插件完成,设置用户名:jenkins,密码:jenkins

  • 三、jenkins的插件以及配置

Jenkins系统管理比较重要的就是插件管理了 ,因为jenkins的工作全部是由插件来完成。

在插件管理中,有可更新、可选插件、已安装,日常的插件安装都是在这个界面上完成的。比如为了和gitlab协同,我们需要安装gitlab的插件。

在高级选项中,我们可以在jenkins官网下载插件,然后上传插件 ,如图:

因为很多插件需要×××才可以继续下载,jenkins还提供了代理的设置

还是在服务器目录下进行上传插件

目录路径= /var/lib/jenkins/plugins/

这个目录下是我们安装所有的插件

jenkins的目录介绍:

[root@linux-node2 ~]# rpm -ql jenkins
/etc/init.d/jenkins #jenkins的启动文件
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins #jenkins的配置文件
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war #jenkins的程序war包
/usr/sbin/rcjenkins #jenkins的为二进制文件
/var/cache/jenkins #jenkins的程序文件,运行程序解压出来的
/var/lib/jenkins #jenkins的主目录
/var/log/jenkins #jenkins的日志文件 jenkins的升级,只需要将war包解压到/var/lib/jenkins目录下,重启jenkins即可。 友情提示:
卡启动问题
jenkins在第一次安装启动时会向官网回传信息,如果网络离线可以正常安装。当网络在线,但是
还有可能是内存不足 备份:
tar zcvf jenkins.tar.gz /var/lib/jenkins

系统管理-->系统配置

执行者数量:配置并发数量,一般设置为5,不超过10

用法:如果是主server,可以不选,如果是从级别必须选择“尽可能的使用这个节点”

生成前等待时间:配置该时间,避免错误操作,有时间返回

  • 三、jenkins升级

()查看war包所在的目录
[root@linux-node2 ~]# rpm -ql jenkins
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins
/var/log/jenkins ()下载最新稳定版的war包
[root@linux-node2 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.46/jenkins.war
---- ::-- https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.46/jenkins.war
Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.6.178, :f000::::::
Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.6.178|:... connected.
HTTP request sent, awaiting response... OK
Length: (65M) [application/java-archive]
Saving to: ‘jenkins.war’ % [====================================================> ] ,, 707KB/s eta 60s

当前jenkins版本为2.32.2

()停止jenkins服务
[root@linux-node2 ~]# service jenkins stop
Stopping jenkins (via systemctl): [ OK ] ()备份原来的war包,并拷贝最新版本war包到/usr/lib/jenkins目录下
[root@linux-node2 ~]# cd /usr/lib/jenkins/
[root@linux-node2 jenkins]# mv jenkins.war jenkins-2.32..war.bak
[root@linux-node2 jenkins]# mv /root/jenkins.war .
[root@linux-node2 jenkins]# service jenkins start
Starting jenkins (via systemctl): [ OK ]
[root@linux-node2 jenkins]# netstat -tulnp |grep
tcp6 ::: :::* LISTEN /java 成功升级到jenkins .46版本

  • 四、jenkins备份

在jenkins界面创建一些项目,这里使用rsync,主要是为了保持备份的属性,如果使用scp或cp有时会导致文件属性的改变而导致jenkins异常。

()创建备份目录
[root@linux-node2 ~]# mkdir /data/backup/jenkins -p ()备份/var/lib/jenkins目录
[root@linux-node2 ~]# rsync -raz --delete --progress /var/lib/jenkins /data/backup/jenkins/ ()删除/var/lib/jenkins/
[root@linux-node2 ~]# rm -rf /var/lib/jenkins/ [root@linux-node2 ~]# service jenkins restart
Restarting jenkins (via systemctl): Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.
[FAILED]
[root@linux-node2 ~]# service jenkins status
JENKINS_HOME directory does not exist: /var/lib/jenkins ()恢复备份
[root@linux-node2 ~]# rsync -raz --delete /data/backup/jenkins/jenkins /var/lib/
[root@linux-node2 ~]# service jenkins restart
Restarting jenkins (via systemctl): [ OK ]

Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份的更多相关文章

  1. Gitlab+Jenkins学习之路(九)之Jenkins的远程管理和集群

    一.Jenkins的远程管理 Jenkins的远程管理方式包含: Shell ssh SSH Plugin ansible.saltstack (1)Shell ssh在项目构建时,jenkins使用 ...

  2. Gitlab+Jenkins学习之路(十四)之自动化脚本部署实践

    目录 一.环境说明和准备 1.环境说明 2.服务器准备工作 二.发布脚本编写 1.自动化部署流程设计 2.自动化部署脚本编写 三.发布测试 1.开发机和github添加ssh信任 2.克隆项目到开发机 ...

  3. Jenkins学习三:介绍一些Jenkins的常用功能

    Jenkins其实就是一个工具,这个工具的作用就是调用各种其他的工具来达成你的目的. 1.备份.迁移.恢复jenkins 首先找到JENKINS_HOME,因为Jenkins的所有的数据都是以文件的形 ...

  4. Gitlab+Jenkins学习之路(八)之发布maven项目及按版本发布

    一.什么是Maven maven是一个项目管理和综合工具.Maven提供给开发人员构建一个完整的生命周期框架. 开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期 ...

  5. Gitlab+Jenkins学习之路(十一)之Jenkins自动触发构建和发布

    思路图: 一.下载gitlab plugin jenkins-->系统管理-->管理插件-->下载并安装gitlab plugin 二.配置gitlab认证 路径:Jenkins-- ...

  6. Gitlab+Jenkins学习之路(十三)之发布Java项目到tomcat

    一.新建一台虚拟机安装tomcat ()安装JDK 官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downl ...

  7. Gitlab+Jenkins学习之路(七)之发布PHP项目

    使用git+jenkins实现持续集成 Step1:构建一个自由风格的php-deploy Step2:Gernal配置,丢弃旧的构建,防止jenkins构建较多之后变臃肿 Step3:源码管理:这里 ...

  8. Gitlab+Jenkins学习之路(十)之Jenkins按角色授权和Pipeline

    一.Jenkins按角色授权 当一个公司的开发分为多个组别,或者是多个项目等等.用于公司内部测试,让开发人员自行构建测试,此时不可能让所有的开发都在公用一个构建,这样变得很混乱,为了解决这一问题,je ...

  9. Gitlab+Jenkins学习之路(一)之Git基础

    1.GIT基础    GIT是一个分布式版本管理系统,速度快,适合大规模,跨地区多人协同开.SVN是一个集中式版本管理系统. (1)GIT生态 GIT分布式版本管理系统 Gitlab git私库解决方 ...

随机推荐

  1. GBK与UTF-8编码错误转换后,无法再正确恢复

    字符集错误转换导致的问题 UTF-8格式编码的字节流,按GBK字符集转换为字符串,会出现乱码,这很正常.但将其重新转为字节流,再用UTF-8字符集转为字符串,还是乱码.这就让我产生了疑惑,虽然使用错误 ...

  2. 使用Instruments中的CoreAnimation分析动画

    使用Instruments中的CoreAnimation分析动画 1. 打开Instruments中的CoreAnimation 2. 运行前的准备工作 要注意勾选以下选项,便于调试 3. 运行与调试 ...

  3. [UI] 精美UI界面欣赏[10]

    精美UI界面欣赏[10]

  4. 初学Linux(一)关闭操作shutdown halt reboot

    1.shutdown –h 10 #这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中. 2.Shutdown –h now #立马关机 3.Shutdown –h 11:1 ...

  5. Difference Between Arraylist And Vector : Core Java Interview Collection Question

    Difference between Vector and Arraylist is the most common  Core Java Interview question you will co ...

  6. THE CUP OF LIFE即生命之杯。

    生命之杯 编辑 THE CUP OF LIFE即生命之杯. <生命之杯>(西班牙语:La copa de la vida,英语:The Cup of Life)是一首由波多黎各裔歌手瑞奇· ...

  7. python第三方库——xlrd和xlwt操作Excel文件学习

    python第三方库——xlrd和xlwt操作Excel文件学习 1安装: C:\Users\Lenovo>pip install xlwtCollecting xlwt  Downloadin ...

  8. MySQL(27):行锁、表锁、乐观锁、悲观锁

    1. 首先说一下:行锁 和 表锁  主要是针对锁粒度划分的. 一般分为:行锁.表锁.库锁 (1)行锁:访问数据库的时候,锁定整个行数据,防止并发错误. (2)表锁:访问数据库的时候,锁定整个表数据,防 ...

  9. php四种基础排序算法的运行时间比较!

    /** * php四种基础排序算法的运行时间比较 * @authors Jesse (jesse152@163.com) * @date 2016-08-11 07:12:14 */ //冒泡排序法 ...

  10. P2245 星际导航

    题目描述 sideman 做好了回到 Gliese星球的硬件准备,但是 sideman 的导航系统还没有完全设计好.为了方便起见,我们可以认为宇宙是一张有 N 个顶点和 M 条边的带权无向图,顶点表示 ...