(1)Continuous integration(CI)php
持续集成是一种软件开发实践,即团队开发成员常常集成他们的工做,一般每一个成员至少集成一次,也就意味着天天可能会发生屡次集成。每次集成都经过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程能够大大减小集成的问题,让团队可以更快的开发内聚的软件。java
(2)没有持续集成node
项目作模块集成的时候,发现不少借口都不通==>浪费大量时间linux
须要手动去编译打包最新的代码==>构建过程不透明git
发布代码,上线,基本靠手工==>脚本乱飞docker
(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.加入集群
-
2、jenkins部署
(1)安装JDK [root@linux-node2 ~]# yum instsall -y java-1.8.0-openjdk java-1.8.0-openjdk-devel (2)下载jenkins的rpm包 [root@linux-node2 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.32.3-1.1.noarch.rpm --2017-12-21 09:11:58-- 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, 2402:f000:1:416:101:6:6:177 正在链接 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.6.178|:443... 已链接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:69675984 (66M) [application/x-redhat-package-manager] 正在保存至: “jenkins-2.32.3-1.1.noarch.rpm” (3)安装jenkins [root@linux-node2 ~]# rpm -ivh jenkins-2.32.3-1.1.noarch.rpm 警告:jenkins-2.32.3-1.1.noarch.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID d50582e6: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:jenkins-2.32.3-1.1 ################################# [100%] (4)启动jenkins [root@linux-node2 ~]# service jenkins start Starting jenkins (via systemctl): [ 肯定 ] [root@linux-node2 ~]# netstat -tulnp|grep 8080 tcp6 0 0 :::8080 :::* LISTEN 42160/java 浏览器访问:192.168.56.12:8080:如图 [root@linux-node2 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword 8addd06f53f6405da6133356af1ca3b0 #登录界面有提示输入密码,初始密码文件为/var/lib/jenkins/secrets/initialAdminPassword 友情提示:jenkins若是跟gitlab在一台服务器须要将jenkins的端口进行修改,须要将jenkins的8080修改成其余端口
安装全部插件:
安装插件完成,设置用户名:jenkins,密码:jenkins
-
3、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,能够不选,若是是从级别必须选择“尽量的使用这个节点”
生成前等待时间:配置该时间,避免错误操做,有时间返回
-
3、jenkins升级
(1)查看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 (2)下载最新稳定版的war包 [root@linux-node2 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.46/jenkins.war --2017-12-21 14:56:10-- 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, 2402:f000:1:416:101:6:6:177 Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.6.178|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 68663046 (65M) [application/java-archive] Saving to: ‘jenkins.war’ 36% [====================================================> ] 24,829,614 707KB/s eta 60s
当前jenkins版本为2.32.2
(3)中止jenkins服务 [root@linux-node2 ~]# service jenkins stop Stopping jenkins (via systemctl): [ OK ] (4)备份原来的war包,并拷贝最新版本war包到/usr/lib/jenkins目录下 [root@linux-node2 ~]# cd /usr/lib/jenkins/ [root@linux-node2 jenkins]# mv jenkins.war jenkins-2.32.2.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 8080 tcp6 0 0 :::8080 :::* LISTEN 47298/java 成功升级到jenkins 2.46版本
-
4、jenkins备份
在jenkins界面建立一些项目,这里使用rsync,主要是为了保持备份的属性,若是使用scp或cp有时会致使文件属性的改变而致使jenkins异常。
(1)建立备份目录 [root@linux-node2 ~]# mkdir /data/backup/jenkins -p (2)备份/var/lib/jenkins目录 [root@linux-node2 ~]# rsync -raz --delete --progress /var/lib/jenkins /data/backup/jenkins/ (3)删除/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 (4)恢复备份 [root@linux-node2 ~]# rsync -raz --delete /data/backup/jenkins/jenkins /var/lib/ [root@linux-node2 ~]# service jenkins restart Restarting jenkins (via systemctl): [ OK ]