一、什么是持续集成?
(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部署、升级和备份的更多相关文章
-
Gitlab+Jenkins学习之路(九)之Jenkins的远程管理和集群
一.Jenkins的远程管理 Jenkins的远程管理方式包含: Shell ssh SSH Plugin ansible.saltstack (1)Shell ssh在项目构建时,jenkins使用 ...
-
Gitlab+Jenkins学习之路(十四)之自动化脚本部署实践
目录 一.环境说明和准备 1.环境说明 2.服务器准备工作 二.发布脚本编写 1.自动化部署流程设计 2.自动化部署脚本编写 三.发布测试 1.开发机和github添加ssh信任 2.克隆项目到开发机 ...
-
Jenkins学习三:介绍一些Jenkins的常用功能
Jenkins其实就是一个工具,这个工具的作用就是调用各种其他的工具来达成你的目的. 1.备份.迁移.恢复jenkins 首先找到JENKINS_HOME,因为Jenkins的所有的数据都是以文件的形 ...
-
Gitlab+Jenkins学习之路(八)之发布maven项目及按版本发布
一.什么是Maven maven是一个项目管理和综合工具.Maven提供给开发人员构建一个完整的生命周期框架. 开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期 ...
-
Gitlab+Jenkins学习之路(十一)之Jenkins自动触发构建和发布
思路图: 一.下载gitlab plugin jenkins-->系统管理-->管理插件-->下载并安装gitlab plugin 二.配置gitlab认证 路径:Jenkins-- ...
-
Gitlab+Jenkins学习之路(十三)之发布Java项目到tomcat
一.新建一台虚拟机安装tomcat ()安装JDK 官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downl ...
-
Gitlab+Jenkins学习之路(七)之发布PHP项目
使用git+jenkins实现持续集成 Step1:构建一个*风格的php-deploy Step2:Gernal配置,丢弃旧的构建,防止jenkins构建较多之后变臃肿 Step3:源码管理:这里 ...
-
Gitlab+Jenkins学习之路(十)之Jenkins按角色授权和Pipeline
一.Jenkins按角色授权 当一个公司的开发分为多个组别,或者是多个项目等等.用于公司内部测试,让开发人员自行构建测试,此时不可能让所有的开发都在公用一个构建,这样变得很混乱,为了解决这一问题,je ...
-
Gitlab+Jenkins学习之路(一)之Git基础
1.GIT基础 GIT是一个分布式版本管理系统,速度快,适合大规模,跨地区多人协同开.SVN是一个集中式版本管理系统. (1)GIT生态 GIT分布式版本管理系统 Gitlab git私库解决方 ...
随机推荐
-
新浪SAE部署django博客
步骤: 第一步:注册新浪SAE账号(即新浪微博),下载TortoiseSVN 第二步:部署代码 使用SAE来部署代码,SAE提供的是PAAS层的云服务,即不是给你一个虚拟主机而是直接上传应用.进入SA ...
-
windows server 2003断开远程之后自动注销用户
windows server 2003断开远程之后自动注销用户 2011-07-30 09:42:52 我来说两句 收藏 我要投稿 最近一台服务器老是断开远程之后过没多久就自动 ...
-
P1026 统计单词个数 区间dp
题目描述 给出一个长度不超过200200的由小写英文字母组成的字母串(约定;该字串以每行2020个字母的方式输入,且保证每行一定为2020个).要求将此字母串分成kk份(1<k \le 401& ...
-
解决vue单页路由跳转后scrollTop的问题
作为vue的初级使用者,在开发过程中遇到的坑太多了.在看页面的时候发现了页面滚动的问题,当一个页面滚动了,点击页面上的路由调到下一个页面时,跳转后的页面也是滚动的,滚动条并不是在页面的顶部 在我们写路 ...
-
5.Python3程序结构
5.1顺序结构 一条语句一条语句顺序的执行. 5.2选择结构 条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: 5.2. ...
-
IEEE 754二进制浮点数算术标准
可能很多人都遇到过浮点数精度丢失的问题,下面以JavaScript为例. 1 - 0.9 = 0.09999999999999998 纳尼,不应该是0.1么,怎么变成0.099999999999999 ...
-
kafka监控工具之一--kafka-manager
部署环境 jdk7 kafka_2.10-0.9.0.1 xshell4 rhel-server-6.5 kafka-manager 是功能比较多的kafka管控工具. 安装方法一 安装方法二 步骤一 ...
-
systemd学习笔记
一.systemd介绍 systemd即为system daemon,是linux下的一种init软件与多数发行版使用的System V风格init相比,systemd采用了以下新技术: (1) 采用 ...
-
ntp/系统时钟/硬件时钟/双系统下计算机时间读取的问题
http://blog.chinaunix.net/uid-182041-id-3464524.html //linux系统时间和硬件时钟问题(date和hwclock) http://j ...
-
java并发编程:线程安全管理类--原子操作类--AtomicIntegerFieldUpdater<;T>;
1.类 AtomicIntegerFieldUpdater<T> public abstract class AtomicIntegerFieldUpdater<T> exte ...