当前位置: 首页 > news >正文

项目(八) Jenkins持续集成与构建

Jenkins环境搭建

由于Jenkins是依赖于java的,所以先介绍java环境的搭建

1)使用官方的二进制包解压安装,官方二进制包的下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

(2)安装java(解压,移动即可)

(3)配置java环境变量/etc/profile

(4)Jenkins的下载和运行

然后我们在浏览器上进行访问:http://IP:8080 出现如下界面

Jenkins介绍和初始化配置

  • Jenkins的作用?

    • 可视化管理服务器
    • 持续构建,可以直接去svn或者git上拉取代码并下发到服务器上
    • 可视化ansible
  • Jenkins监听端口8080

    • nohup java -jar jenkins.war &> /tmp/jenkins.out & #启动Jenkins方式
    • netstat -antup | grep java #查看监听端口
    • http://IP:8080 #访问方式
  • Jenkins默认密码路径,需要到Jenkins所在的服务器进行查看

    • /root/.jenkins/secrets/initialAdminPassword

Jenkins初始化配置:

将服务器上的密码复制过来到浏览器上提交后,静心等待,出现如下界面

(2)新添加一个用户yunjisuan

QQ截图20180622115907.png-25.3kB

(3)查看Jenkins的权限(登录用户可以做任何事情)

系统管理--->全局安全配置

QQ截图20180622121255.png-59.6kB

 

十五,Jenkins实现命令结果的可视化

(1)添加ssh方式的被管理服务器

系统管理--->系统设置--->找到Publish over SSH可以添加对应的操作服务器

1.png-39.5kB

2.png-68.3kB

3.png-23.4kB

4.png-24.3kB

5.png-31kB

6.png-28.9kB

这就添加好一台被管理的主机了。要继续添加被管理的主机只需要重复之前的过程

QQ截图20180622225504.png-19.2kB

(2)创建新任务*

11.png-34.1kB

12.png-67kB

13.png-16.2kB

14.png-43.8kB

(3)立刻构建任务并执行

31.png-39.1kB

32.png-44.7kB

33.png-42.5kB

34.png-45.6kB

35.png-38.3kB

36.png-92.6kB

 

十六,Jenkins+svn实现持续化集成

需求,开发改完代码上传到svn上,然后运维打包最新版本代码部署到业务服务器上。
svn的部署与应用请参考专题(一)

 

16.1 设置svn的连接密码,并进行代码的部署测试

411.png-48.4kB

412.png-42.8kB

413.png-37kB

414.png-31kB

415.png-27.4kB

416.png-36.5kB

417.png-45kB

420.png-41.4kB

419.png-45.1kB

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

QQ截图20180626002020.png-20.5kB

 
  1. [root@webB tmp]# hostname -I
  2. 192.168.200.138
  3. [root@webB tmp]# ls /tmp/test/
  4. mycode
  5. [root@webB tmp]# ls /tmp/test/mycode/
  6. python.py 云计算最终架构示例模板(一).png 云计算最终架构示例模板(二).png 云计算期中架构模版(一).png
 

16.2 模拟真实环境web服务器的代码部署和备份

 
  1. [root@localhost tmp]# mkdir -p /www/{html,backup}
  2. [root@localhost tmp]# tree /www/
  3. /www/
  4. ├── backup #html网页目录的备份放置目录
  5. └── html #网页目录

在jenkins上设置webA,webB两台服务器作为项目的构建目标

911.png-42.6kB

912.png-37.4kB

将以下shell脚本代码复制到构建目标的Exec command里

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

913.png-51.5kB

选择立刻构建进行测试

 
  1. #检查webA和webB,代码构建情况
  2. [root@webA tmp]# tree /www/
  3. /www/
  4. ├── backup
  5.    └── html_2018-06-25-12-58.tar.gz #旧网页目录备份
  6. └── html
  7. └── mycode
  8. ├── python.py
  9. ├── \344\272\221\350\256\241\347\256\227\346\234\200\347\273\210\346\236\266\346\236\204\347\244\272\344\276\213\346\250\241\346\235\277\357\274\210\344\270\200\357\274\211.png
  10. ├── \344\272\221\350\256\241\347\256\227\346\234\200\347\273\210\346\236\266\346\236\204\347\244\272\344\276\213\346\250\241\346\235\277\357\274\210\344\272\214\357\274\211.png
  11. └── \344\272\221\350\256\241\347\256\227\346\234\237\344\270\255\346\236\266\346\236\204\346\250\241\347\211\210\357\274\210\344\270\200\357\274\211.png
  12. 3 directories, 5 files
  13. [root@webB tmp]# tree /www/
  14. /www/
  15. ├── backup
  16.    └── html_2018-06-25-12-58.tar.gz #旧网页目录备份
  17. └── html
  18. └── mycode
  19. ├── python.py
  20. ├── \344\272\221\350\256\241\347\256\227\346\234\200\347\273\210\346\236\266\346\236\204\347\244\272\344\276\213\346\250\241\346\235\277\357\274\210\344\270\200\357\274\211.png
  21. ├── \344\272\221\350\256\241\347\256\227\346\234\200\347\273\210\346\236\266\346\236\204\347\244\272\344\276\213\346\250\241\346\235\277\357\274\210\344\272\214\357\274\211.png
  22. └── \344\272\221\350\256\241\347\256\227\346\234\237\344\270\255\346\236\266\346\236\204\346\250\241\347\211\210\357\274\210\344\270\200\357\274\211.png
  23. 3 directories, 5 files
 

16.3 模拟真实环境,开发进行代码回滚

QQ截图20180626011200.png-5kB

(1)右键点击共享目录选择TortoiseSVN--->Show log

QQ截图20180626011434.png-28.9kB

右键点击想要回滚的版本选择Revert to this revision

QQ截图20180626011605.png-14.7kB

QQ截图20180626011617.png-30kB

此时你发现你的共享目录里的东西已经被回滚到了指定的版本。
最后我们千万别忘记了右键点击共享目录,将结果进行提交(SVN commit)

QQ截图20180626011751.png-32.8kB

(2)重新进行jenkins项目构建,并检查部署情况

 
  1. [root@webA tmp]# tree /www/
  2. /www/
  3. ├── backup
  4. ├── html_2018-06-25-12-58.tar.gz
  5. └── html_2018-06-25-13-15.tar.gz
  6. └── html
  7. └── mycode
  8. ├── python.py
  9. └── \346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt
  10. 3 directories, 4 files
  11. [root@webB tmp]# tree /www/
  12. /www/
  13. ├── backup
  14.    ├── html_2018-06-25-12-58.tar.gz
  15.    └── html_2018-06-25-13-15.tar.gz
  16. └── html
  17. └── mycode
  18. ├── python.py
  19. └── \346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt
  20. 3 directories, 4 files

QQ截图20180626011930.png-19.7kB

至此,测试成功!

 

十七,Jenkins实现ansible可视化

(1)安装jenkins ansible插件,启动ansible插件

1.png-44.8kB

2.png-68.3kB

3.png-51kB

4.png-17.6kB

最后进入安装界面最下方勾选,安装完成时重启Jenkins

5.png-36.3kB

(2)系统管理--->全局工具配置---->配置ansible

11.png-24.5kB

12.png-52.5kB

13.png-17.1kB

14.png-33.5kB

15.png-9.6kB

(3)新建一个项目任务,使用ansible进行构建,跑个shell和copy模块

新建一个叫做ansible_test的新项目任务,过程略

16.png-87.3kB

进入项目的配置里。构建一个基于ansible的任务

17.png-51.7kB

18.png-53.4kB

然后点击立刻构建功能,并查看输出结果

19.png-35.5kB

(4)新建一个项目任务,使用ansible-playbook进行构建

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

然后新建一个新的项目任务,进行配置

21.png-31.3kB

22.png-32.6kB

23.png-41.3kB

55.png-49kB

56.png-41.3kB

最后查看构建的可视化输出结果

99.png-42.4kB

转载于:https://www.cnblogs.com/hai-better/p/10015694.html

相关文章:

  • Dashboard安装配置
  • vue中的slot
  • String和StringBuilder、StringBuffer的区别?
  • 关于Numba开源库(Python语法代码加速处理,看过一个例子,速度可提高6倍)
  • Aibee完成A轮6000万美元融资 宣布前阿里达摩院朱胜火加盟
  • re:Invent 大会第一天,看看AWS有哪些最新进展?\n
  • 自然语言处理怎么最快入门?
  • RabbitMQ(二):理解消息通信RabbitMQ
  • 每天10道Java面试题,跟我走,offer有!
  • OSChina 周四乱弹 —— 你从小继承了程序员基因
  • Java中数组、集合、链表、队列的数据结构和优缺点和他们之间的区别
  • Django的模板系统
  • 深入理解Emoji(二) —— 字节序和BOM
  • 防止系统锁屏-python、C++实现
  • 意见汇总
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • Angular Elements 及其运作原理
  • AngularJS指令开发(1)——参数详解
  • JAVA 学习IO流
  • JavaScript创建对象的四种方式
  • vue.js框架原理浅析
  • webpack入门学习手记(二)
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 服务器之间,相同帐号,实现免密钥登录
  • 工作手记之html2canvas使用概述
  • 关于List、List?、ListObject的区别
  • 解决iview多表头动态更改列元素发生的错误
  • 面试遇到的一些题
  • 嵌入式文件系统
  • 如何进阶一名有竞争力的程序员?
  • 入门到放弃node系列之Hello Word篇
  • 《码出高效》学习笔记与书中错误记录
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #git 撤消对文件的更改
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (day6) 319. 灯泡开关
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (LeetCode) T14. Longest Common Prefix
  • (多级缓存)缓存同步
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)JAVA中的堆栈
  • (转)LINQ之路
  • (转)socket Aio demo
  • (转)母版页和相对路径
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .NET Core引入性能分析引导优化
  • .net 程序发生了一个不可捕获的异常
  • .net网站发布-允许更新此预编译站点