Jenkins持续集成与构建

  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\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
模拟真实环境,开发进行代码回滚

在这里插入图片描述
(1)右键点击共享目录选择TortoiseSVN—>Show log
在这里插入图片描述
右键点击想要回滚的版本选择Revert to this revision
在这里插入图片描述
在这里插入图片描述
此时你发现你的共享目录里的东西已经被回滚到了指定的版本。
最后我们千万别忘记了右键点击共享目录,将结果进行提交(SVN commit)
在这里插入图片描述
(2)重新进行jenkins项目构建,并检查部署情况

[root@webA tmp]# tree /www/
 /www/
 ├── backup
 │ ├── html_2018-06-25-12-58.tar.gz
 │ └── html_2018-06-25-13-15.tar.gz
 └── html
 └── mycode
 ├── python.py
 └── \346\226\260\345\273\272\346\226\207\346\234\254\346\226\2
07\346\241\243.txt

3 directories, 4 files

 [root@webB tmp]# tree /www/
 /www/
 ├── backup
 │ ├── html_2018-06-25-12-58.tar.gz
 │ └── html_2018-06-25-13-15.tar.gz
 └── html
 └── mycode
 ├── python.py
 └── \346\226\260\345\273\272\346\226\207\346\234\254\346\226\2
07\346\241\243.txt

 3 directories, 4 files

在这里插入图片描述
至此,测试成功!

Jenkins实现ansible可视化

(1)安装jenkins ansible插件,启动ansible插件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后进入安装界面最下方勾选,安装完成时重启Jenkins
在这里插入图片描述
(2)系统管理—>全局工具配置---->配置ansible
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)新建一个项目任务,使用ansible进行构建,跑个shell和copy模块
新建一个叫做ansible_test的新项目任务,过程略
在这里插入图片描述
进入项目的配置里。构建一个基于ansible的任务
在这里插入图片描述
在这里插入图片描述
然后点击立刻构建功能,并查看输出结果
在这里插入图片描述
(4)新建一个项目任务,使用ansible-playbook进行构建

#准备一个playbook的配置文件
 [root@ansible scripts]# cat /service/scripts/test.yaml
 ---
 - hosts: all
 tasks:
 - name: test jenkins ansible-playbook
 shell: echo "welcome to yunjisuan" >> /tmp/yunjisuan.txt

然后新建一个新的项目任务,进行配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后查看构建的可视化输出结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43304804/article/details/84950652