linux运维、架构之路-Git+Jenkins实现自动化部署
一、Jenkins介绍
jenkins是一个用JAVA编写的开源的持续集成工具,运行在servlet容器中,支持软件配置管理(SCM)工具,可以执行基于APACHE ANT和APACHE MAVEN的项目,以及任意Shell脚本和Windows批处理命令。
学习资料
https://www.abcdocker.com/abcdocker/2041
1、持续集成:频繁的(一天多次)将代码集成到主干——>CI
2、持续交付:频繁的将软件的新版本,交付给质量团队或者用户,以供评审,通过评审,代码进入生产阶段——>CD
3、持续部署:持续交付的下一步,代码通过评审以后,自动部署到生产环境——>CD
二、Jenkins安装部署
1、环境准备
[root@jenkins ~]# cat /etc/redhat-release
CentOS Linux release 7.2. (Core)
[root@jenkins ~]# uname -r
3.10.-.el7.x86_64
[root@jenkins ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
[root@jenkins ~]# getenforce
Disabled
[root@jenkins ~]# hostname -I
172.19.5.64 172.16.1.64
2、Jenkins安装配置
[root@jenkins ~]#curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #添加yum源
[root@jenkins ~]#yum -y install java-1.8.-openjdk java-1.8.-openjdk-devel #安装依赖包JDK
cd /server/tools/ #上传jenkins安装包
[root@jenkins tools]#rpm -ivh jenkins-2.73.-1.1.noarch.rpm #rpm安装jenkins
[root@jenkins tools]#/etc/init.d/jenkins start #启动jenkins服务
[root@jenkins ~]# netstat -tunlp|grep java #查看端口
tcp6 ::: :::* LISTEN /java
3、Jenkins安装文件说明
[root@jenkins ~]# rpm -ql jenkins
/etc/init.d/jenkins # 启动文件
/etc/logrotate.d/jenkins # 日志轮询
/etc/sysconfig/jenkins # Jenkins配置文件
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins # web站点目录
/var/lib/jenkins # jenkins家目录
/var/log/jenkins # 日志目录
三、Jenkins网页端配置
1、浏览器输入172.19.5.64:8080访问
2、安装Jenkins插件
[root@jenkins tools]# cd /server/tools/ #上传插件包
[root@jenkins tools]# tar xfP jenkins_plugins.tar.gz
[root@jenkins tools]# /etc/init.d/jenkins restart #重启jenkins服务
注:/var/lib/jenkins/plugins/ #插件安装目录
3、配置Jenkins并发执行任务数量,默认为2个
4、邮件配置
四、构建自动测试项目
1、复制Gitlab私钥到jenkins上面
[root@gitlab git_data]# cat /root/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAtWR5jMLlaAIgj76eWxZinWAtOSLZmsVK2UsdtRQ15lFDPBpl
rwek2aLXONY3HGnJesNiUc+vCr6WZrGOboKlODIILL5uw7a4ggQBvnLv+NRdgaAF
Mt2vtkjl6DKSl38QMd7THxhf1TS/lmEms4VzCiD4sK6P29Nl9LD3g1o2W9GVHEUx
……
2、自动测试执行Shell命令
创建/data/www目录后再次执行
授权jenkins管理/data/www目录后再次执行
[root@jenkins ~]# chown -R jenkins.jenkins /data/www/
五、配置Gitlab-Push 自动触发jenkins构建
1、下载安装gitlab-plugin——>jenins插件管理,前面我们已安装过
2、配置gitlab认证
gitlab上面查看token认证码
Jenkins服务端操作
3、Jenkins连接管理gitlab服务器
4、Jenkins构建任务触发器
测试结果成功
5、向gitlab服务器提交代码,验证是否自动部署
[root@gitlab ~]#cd git_data/Nginx_conf #进入项目工作目录下
[root@gitlab Nginx_conf]# echo "gitlab and jenkins" >index.html
[root@gitlab Nginx_conf]# git add index.html
[root@gitlab Nginx_conf]# git commit -m "test gitlab and jenkins" #提交到gitlab仓库
[root@gitlab Nginx_conf]# git push origin master #将本地代做仓库推送到gitlab服务器master分支下
6、Jenkins查看构建项目信息
查看Jenkins日志记录信息
[root@jenkins ~]# tail -f /var/log/jenkins/jenkins.log
十二月 19, 2017 3:21:17 下午 com.dabsquared.gitlabjenkins.trigger.handler.AbstractWebHookTriggerHandler handle
信息: linux triggered for push.
十二月 19, 2017 3:21:26 下午 hudson.model.Run execute
信息: linux #8 main build action completed: SUCCESS
十二月 19, 2017 3:44:20 下午 com.dabsquared.gitlabjenkins.webhook.GitLabWebHook getDynamic
信息: WebHook called with url: /project/linux
十二月 19, 2017 3:44:20 下午 com.dabsquared.gitlabjenkins.trigger.handler.AbstractWebHookTriggerHandler handle
信息: linux triggered for push.
十二月 19, 2017 3:44:26 下午 hudson.model.Run execute
信息: linux #9 main build action completed: SUCCESS
gitlab+jenkins集成实现的功能:开发写好代码提交到gitlab上,当push到gitlab服务器上面,jenkins自动帮我们构建
linux运维、架构之路-Git+Jenkins实现自动化部署的更多相关文章
- linux运维架构师职业规划
1.假如你从来未接触过Linux的话,首先要做的就找一本指导书来学习.现在公认的Linux的入门书籍是“鸟哥的私房菜”,讲的很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服务器篇.“鸟哥的私房 ...
- linux运维、架构之路-keepalived高可用
一.Keepalived介绍 Keepalived起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能,Ke ...
- Linux运维企业架构实战系列
Linux运维企业架构项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-LVS.nginx实现负载均衡系列 2.1 项目实战2.1-实现基于LVS负载均衡集 ...
- 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路
做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...
- Linux运维企业架构项目实战系列
Linux运维企业架构项目实战系列 项目实战1—LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2—LVS.nginx实现负载均衡系列2.1 项目实战2.1—实现基于LVS负载均衡集群 ...
- Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Discuz!
Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Disc ...
- Linux 运维入门到跑路书单推荐
一.基础入门 <鸟哥的Linux私房菜基础学习篇>:最具知名度的Linux入门书<鸟哥的Linux私房菜基础学习篇>,全面而详细地介绍了Linux操作系统. https://b ...
- 从零起步做到Linux运维经理, 你必须管好的23个细节
“不想成为将军的士兵,不是好士兵”-拿破仑 如何成为运维经理? 一般来说,运维经理大概有两种出身:一种是从底层最基础的维护做起,通过出色的维护工作,让公司领导对这个人非常认可,同时对Linux运维工作 ...
- linux运维工程师面试题收集
面试必考 mysql5和mysql6 有什么区别 mysql-server-5.5:默认引擎改为Innodb,提高了性能和扩展性,提高实用性(中继日志自动恢复) mysql-server-5.6:In ...
随机推荐
- 中国MOOC_面向对象程序设计——Java语言_期末考试编程题_1细胞自动机
期末考试编程题 返回 这是期末考试的编程题 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间之前提交答案,系统将取其中的最高分作为最终成 ...
- DWIN串口屏的使用
学习需要,根据dwin的官方文档及网络资料整理而来. 一. 基础知识理解 1.1.变量地址和描述指针 VP(变量地址)和SP(描述指针)通常是指显示变量功能的两种定义,两者共用0000到6FFF地址 ...
- 【Linux开发】【Qt开发】配置tslibs触摸屏库环境设置调试对应的设备挂载点
[Linux开发][Qt开发]配置tslibs触摸屏库环境设置调试对应的设备挂载点 标签(空格分隔): [Linux开发] [Qt开发] 比如: cat /dev/input/mice cat /de ...
- 方便测试和调用webservice的工具(转)
现在很多时候我们都会遇到这种情况:自己开发的程序要和其他各种各样的程序进行接口数据交互,这里就用到常用的接口服务的调用,但是有时候为了进行方便的测试,我们可能会写许多测试类等来测试,这样浪费了时间,也 ...
- 一个实用的iptables脚本(各种过滤写法参考)
#!/bin/shmodprobe ipt_MASQUERADEmodprobe ip_conntrack_ftpmodprobe ip_nat_ftpiptables -Fiptables -t n ...
- docker之配置TensorFlow的运行环境
Docker是一种 操作系统层面的虚拟化技术,类似于传统的虚拟机.传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程:而容器内的应用进程直接运行于宿主的内核,容 ...
- 基类子类在Qt信号量机制下的思考
背景知识: 基类 superClass class superClass { public: superClass() { std::string m = "superClass() &qu ...
- 数据库允许空值(null),往往是悲剧的开始 (转)
数据库字段允许空值,会遇到一些问题,此处包含的一些知识点,和大家聊一聊. 数据准备: create table user ( id int, name varchar(20), index(id) ) ...
- django部署到linux上不显示.svg图标处理方法
在setting文件的最开始添加如下内容: import mimetypes mimetypes.add_type("image/svg+xml", ".svg" ...
- DataTable中如何去除重复的项 (获得某个字段中的不重复项)
就是获取DataTable中某一列的值,因为从数据库中检索数据时,按照2个字段进行分组,而要获得的那一列刚好在分组这两列中,所以该列的值必然有重复,于是就想到了去除重复,有了思路以后在网上看了一些方法 ...