- 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
- 安装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)
- 配置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)
- 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将写好的脚本直接批量分配给业务服务器。
- 设置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