Jenkins持续集成与构建

本文详细介绍了Jenkins的实践应用,包括命令结果可视化、Jenkins+SVN实现持续集成、模拟真实环境的代码部署与回滚、Ansible的可视化配置。还探讨了Jenkins的CI/CD、DevOps理念,以及如何部署Git远程仓库,配置权限管理和Master-Slave架构。
摘要由CSDN通过智能技术生成
  1. jenkins环境
[root@localhost ~]# ls
anaconda-ks.cfg     jdk-8u171-linux-x64.tar.gz  TortoiseSVNv1.9.7.27907.zip
install.log         jenkins.war                install.log.syslog  Python-3.5.2.tgz

  1. 安装Java(解压,移动即可)
[root@localhost ~]# tar xf jdk-8u171-linux-x64.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# mv jdk1.8.0_171/ jdk
#全路径验证Java是否安装成功
[root@localhost local]# /usr/local/jdk/bin/java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

  1. 配置Java环境变量/etc/proflle
[root@localhost local]# vim /etc/profile
#在末尾加上环境变量
export JAVA_HOME=/usr/local/jdk/
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
[root@localhost local]# source /etc/profile
[root@localhost local]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

  1. jenkins的下载和运行
#启动jenkins并后台运行
[root@localhost local]# cd ~
[root@localhost ~]# nohup java -jar jenkins.war &> /tmp/jenkins.out &
[1] 1252
[root@localhost ~]# netstat -antup | grep java | grep -v grep
tcp        0      0 :::8080                     :::*                        LISTEN      1252/java           
tcp        0      0 ::ffff:192.168.239.12:39374 ::ffff:52.202.51.185:443    ESTABLISHED 1252/java           
tcp        0      0 ::ffff:192.168.239.12:39373 ::ffff:52.202.51.185:443    ESTABLISHED 1252/java           

访问192.168.239.128:8080
在这里插入图片描述

[root@localhost ~]# cd .jenkins/secrets/
[root@localhost secrets]# cat initialAdminPassword 
13ff87a7518648f580cbe04fa37345d3        #访问jenkins生成的随机密码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在jenkins中,每个用户都具有所有权限。(常用于公司内部)
在这里插入图片描述
在这里插入图片描述

jenkins实现命令结果的可视化

(1)添加ssh方式的被管理服务器
系统管理---->系统设置----->找到Publish over SSH可以添加对应的操作服务器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述若单独给新创建的www项目创建一个视图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先【应用】,再【保存】;点击【立即构建】
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

jenkins+svn实现持续化集成

需求:开发改完代码上传(commit)到svn上,svn更新版本,(运维)jenkins就会自动去svn把最新版代码tar打包,然后批量部署到业务服务器上(web1目录和web2目录)。分发完,将在项目中配置的命令,备份WEB服务器的原网页目录,然后再把新传送的代码覆盖进去,就会自动上线(更新)。ansible将写好的脚本直接批量分配给业务服务器。

  1. 设置svn的连接密码并进行代码的部署测试
#web1和web2中安装svn
[root@localhost ~]# mount /dev/sr0 /media/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# yum -y install subversion
Loaded plugins: fastestmirror
Determining fastest mirrors
[root@localhost ~]# mkdir -p /application/svndata
[root@localhost ~]# mkdir -p /application/svnpasswd
[root@localhost ~]# svnadmin create /application/svndata/yunjisuan
[root@localhost conf]# cp authz /application/svnpasswd/
[root@localhost conf]# cp passwd /application/svnpasswd/
[root@localhost conf]# cp svnserve.conf{,.bak}
[root@localhost conf]# vim svnserve.conf
  12  anon-access = none          #禁止匿名访问
  13  auth-access = write         #验证访问可写
  20  password-db = /application/svnpasswd/passwd #密码文件位置
  27  authz-db = /application/svnpasswd/authz     #验证文件位置

#启动svn
[root@localhost conf]# svnserve -d -r /application/svndata/    
[root@localhost conf]# netstat -antup | grep 3690
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      1101/svnserve       

 #在/application/svnpasswd/passwd文件末尾追加如下内容:
[root@localhost conf]# vim /application/svnpasswd/passwd 
[users]
# harry = harryssecret  
# sally = sallyssecret
yunjisuan = 123456     #设置账号密码
benet = 123456  	    #设置账号密码
stu0001 = 123456       #设置账号密码
stu0002 = 123456	    #设置账号密码  

#编辑authz配置文件进行授权,在authz末尾加入以下几句代码
[root@localhost conf]# egrep -v "#|^$" /application/svnpasswd/authz
[aliases]
[groups]
sagroup = stu001,stu002         #新增本行,定义组名
[yunjisuan:/]                   #定义授权的范围
yunjisuan = rw                  #用户单独授权
benet = r                       #用户单独授权
@sagroup = r                    #组用户授权


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置完毕后,应用保存。
在windows上对svn的yunjisuan项目进行版本提交后
选择立刻构建项目
在这里插入图片描述

模拟真实环境web服务器的代码部署和备份
[root@localhost tmp]# mkdir -p /www/{html,backup}
 [root@localhost tmp]# tree /www/
 /www/
 ├── backup #html网页目录的备份放置目录
 └── html #网页目录

在jenkins上设置webA,webB两台服务器作为项目的构建目标
在这里插入图片描述
在这里插入图片描述
将以下shell脚本代码复制到构建目标的Exec command里

#备份web服务器旧网页目录代码,并将部署到服务器上的新代码覆盖到网页目录里
 cd /www
 /usr/bin/tar zcf html_$(date +%F-%H-%S).tar.gz html
 rm -rf html/*
 mv html_*.tar.gz backup/
 mv /tmp/test/* /www/html/

在这里插入图片描述
选择立刻构建进行测试

#检查webA和webB,代码构建情况
 [root@webA tmp]# tree /www/
 /www/
 ├── backup
 │ └── html_2018-06-25-12-58.tar.gz #旧网页目录备份
 └── html
 └── mycode
 ├── python.py
 ├── \344\272\221\350\256\241\347\256\227\346\234\200\347\273\2
10\346\236\266\346\236\204\347\244\272\344\276\213\346\250\241\346\23
5\277\357\274\210\344\270\200\357\274\211.png
 ├── \344\272\221\350\256\241\347\256\227\346\234\200\347\273\2
10\346\236\266\346\236\204\347\244\272\344\276\213\346\250\241\346\23
5\277\357\274\210\344\272\214\357\274\211.png
 └── \344\272\221\350\256\241\347\256\227\346\234\237\344\270\2
55\346\236\266\346\236\204\346\250\241\347\211\210\357\274\210\344\27
0\200\357\274\211.png

 3 directories, 5 files

 [root@webB tmp]# tree /www/
 /www/
 ├── backup
 │ └── html_2018-06-25-12-58.tar.gz #旧网页目录备份
 └── html
 └── mycode
 ├── python.py
 ├── \344\272\221\350\256\241\347\256\227\346\234\200\347\273\2
10\346\236\266\346\236\204\347\244\272\344\276\213\346\250\241\346\23
5\277\357\274\210\344\270\200\357\274\2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值