Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份
一、什么是持续集成?
(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私库解决方 ...
随机推荐
- Linux man 命令详细介绍
知道linux帮助文件(man-pages,手册页)一般放在,$MANPATH/man 目录下面,而且按照领域与语言放到不同的目录里面. 看了上一章,要找那个命令使用相关手册,只要我们按照领域区分,到 ...
- spring mvc 解决跨域问题
Spring MVC 从4.2版本开始增加了对CORS的支持. 在Controller上使用@CrossOrigin注解: // 指定域名 @CrossOrigin("http://doma ...
- SQL Server 常用数据类型
char: 固定长度,存储ANSI字符,不足的补英文半角空格. varchar: 可变长度,存储ANSI字符,根据数据长度自动变化. nchar: 固定长度存储Unicode字符,汉字英文 ...
- 使用 Versions for mac 进行版本控制
刚开始折腾 xcode 5.1 自己的svn版本控制,应该很好用,但是用不好,搞了半天也没法把工程传到svn服务器上去. 在 xcode 5.1 Soure Control 中弄 点击 Check O ...
- 应用程序-特定 权限设置并未向在应用程序容器 不可用 SID (不可用)中运行的地址 LocalHost (使用 LRPC) 中的用户
这是安装biztalk server 2013出现的问题,很多天了没解决,下边这个解决办法也搜到过类似的,但上次实验时出现设置组件权限时发现都是按钮都是灰的,无法操作. 这次设置好了.谢谢ibg. 文 ...
- 内置数据结构(tuple)
一.元组(tuple) 元组不能增.删和改,所以元组的元素只能查. tp = tuple() #初始化一个元组 tp = () #同上 tp = (1, 2, 3, 4,) #错误的定义元组方式 t ...
- 移动端上下滑动事件之--坑爹的touch.js
下面的方法,不知道是操作方法不对还是啥. 在 zepto.js 里面加那一段代码不起作用 百度的 touch.js 是可以用的,但是使用方式 和 zepto有点不一样. 解决方案:参照这个链接地址 ...
- PHP设计模式系列 - 单例
单例模式 通过提供自身共享实例的访问,单例设计模式用于限制特定对象只能被创建一次. 使用场景 例如数据库实例,一般都会走单例模式. 单例模式可以减少类的实例化 代码:来源InitPHP框架,先检测类有 ...
- php 分享一个object(stdclass)转数组的函数
经常调用一个借口之后 返回的内容是json串,利用php函数json_decode() 解析json串之后得到的 数据类型为object(stdclass) 这是一个对象,要取其中的内容也可以 取得, ...
- 3223. 文艺平衡树【平衡树-splay】
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 ...