Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份

  • 一、什么是持续集成?
  • (1)Continuous integration(CI)

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

    Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份

    (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部署
    <code>(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修改为其他端口/<code>
    Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份

    安装所有插件:

    Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份

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

    Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份

    • 三、jenkins的插件以及配置

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

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

    Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份

    Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份

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

    Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份

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

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

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

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

    jenkins的目录介绍:

    <code>[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/<code>

    系统管理-->系统配置

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

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

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

    Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份

    Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份

    • 三、jenkins升级

    <code>(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/<code>

    当前jenkins版本为2.32.2

    Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份

    <code>(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版本/<code>
    Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份

    • 四、jenkins备份

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

    <code>(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 ]/<code>


    分享到:


    相關文章: