Jenkins的安装和简单使用

一、DevOpe

devop工作流

敏捷开发

  • 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

持续集成

  • 持续集成(Continuous Integration)简称CI,持续集成强调开发人员提交了新代码之后,立刻自动的进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
  • 持续集成过程中很重视自动化测试验证结果,对可能出现的一些问题进行预警,以保障最终合并的代码没有问题。

持续交付

  • 持续交付CD(Continuous Delivery)基本概念持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
  • 持续交付并不是指软件每一个改动都要尽快部署到产品环境中,它指的是任何的代码修改都可以在任何时候实施部署。

持续部署

  • 持续部署(Continuous Deployment)是指当交付的代码通过评审之后,自动部署到生产环境中。持续部署是持续交付的最高阶段。
  • 持续部署是自动的持续部署是持续交付的最高阶段。
  • 持续交付与持续部署的关系有时候会混淆。持续部署意味着所有的变更都会被自动部署到生产环境中。持续交付意味着所有的变更都可以被部署到生产环境中,但是出于业务考虑,可以选择不部署。如果要实施持续部署,必须先实施持续交付。持续交付表示的是一种能力,而持续部署则是一种方式。

DevOps 工作流

DevOps 能力环
  • DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
  • 它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。 它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。
  • 通过在共同的业务目的情境中让开发和运维角色与流程变的一致,DevOps 有助于促进 IT 的统一。开发和运维都需要明确,自己是统一业务流程的一份子。DevOps 思维确保了无论组织结构是怎样的,个体决策与行为需要尽力为统一的业务流程提供支持和促进作用。

实现DevOps需要工具

工具链的打通,那么工具自然就需要做好准备。现将工具类型及对应的不完全列举整理如下:

代码管理(SCM):GitHub、GitLab、BitBucket、SubVersion
构建工具:Ant、Gradle、maven
自动部署:Capistrano、CodeDeploy
持续集成(CI):Bamboo、Hudson、Jenkins
配置管理:Ansible、Chef、Puppet、SaltStack、ScriptRock GuardRail
容器:Docker、LXC、第三方厂商如AWS
编排:Kubernetes、Core、Apache Mesos、DC/OS
服务注册与发现:Zookeeper、etcd、Consul
脚本语言:python、ruby、shell
日志管理:ELK、Logentries
系统监控:Datadog、Graphite、Icinga、Nagios
性能监控:AppDynamics、New Relic、Splunk
压力测试:JMeter、Blaze Meter、loader.io
预警:PagerDuty、pingdom、厂商自带如AWS SNS
HTTP加速器:Varnish
消息总线:ActiveMQ、SQS
应用服务器:Tomcat、JBoss
Web服务器:Apache、Nginx、IIS
数据库:MySQL、Oracle、PostgreSQL等关系型数据库;cassandra、mongoDB、redis等NoSQL数据库
项目管理(PM):Jira、Asana、Taiga、Trello、Basecamp、Pivotal Tracker

二Jenkins简易安装使用

1、Jenkins是什么

  • Jenkins是一款开源CI&CD软件,用于自动化各种任务,包括构建、测试和部署软件.Jenkins支持各种运行方式,可通过系统包,Docker或者通过一个独立的Java程序.
image.png

2、安装Jenkins

  • 因为Jenkins是java研发,所以安装时候首先安装jdk
#安装jdk8
[root@node-60 ~]# yum install java-1.8.0-openjdk-devel -y

Jenkins下载地址https://jenkins.io/download/

  • 这里我们使用rpm安装方式,也可以下载使用war包,但要部署tomcat,把war文件放到tomcat目录中部署。

部署方法一:rpm方式

#下载Jenkins,安装文件比较大
[root@node-61 ~]# wget https://prodjenkinsreleases.blob.core.windows.net/redhat-stable/jenkins-2.150.1-1.1.noarch.rpm

#安装
[root@node-61 ~]# rpm -ivh jenkins-2.150.1-1.1.noarch.rpm

#启动Jenkins
[root@node-61 ~]# systemctl start jenkins
[root@node-61 ~]# ss -tnl
State      Recv-Q Send-Q Local Address:Port                Peer Address:Port                      
LISTEN     0      50                :::8080                          :::*  

部署方法二:war+Tomcat方式

#安装tomcat
[root@node-61 ~]# yum install tomcat -y

#下载war文件到tomcat目录中,war文件会自动展开
[root@node-61 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.150.2/jenkins.war -P /usr/share/tomcat/webapps/

#启动tomcat
[root@node-61 ~]# systemctl start tomcat
[root@node-61 ~]# ss -tnl
State      Recv-Q Send-Q Local Address:Port                Peer Address:Port              
LISTEN     0      100               :::8080                          :::*     

登录管理页面,并在提升路径找到解锁密码

解锁Jenkins

选择安装

[图片上传失败...(image-c25602-1550412947501)]


插件管理

系统管理中报错

修复报错

#编辑配置文件
[root@node-61 ~]# vim /etc/tomcat/server.xml 
..........
   <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>    #添加
#重启tomcat
[root@node-61 ~]# systemctl restart tomcat

全局工具配置

全局工具配置
#安装maven和docker,也可以在Jenkins管理页面中选择自动安装
[root@node-61 ~]# yum install maven docker git -y

#查询版本和路径
[root@node-61 ~]# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
[root@node-61 ~]# which java
/usr/bin/java

[root@node-61 ~]# mvn -v
Apache Maven 3.0.5 (Red Hat 3.0.5-17)
Maven home: /usr/share/maven
Java version: 1.8.0_191, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.1.3.el7.x86_64", arch: "amd64", family: "unix"

[root@node-61 ~]# docker -v
Docker version 1.13.1, build 07f3374/1.13.1
[root@node-61 ~]# which docker
/usr/bin/docker
jdk手动设置路径

git已经安装,所以自动使用默认路径

手动设置maven和docker路径

安装一个插件

插件的安装

3、使用Jenkins构建一个简单的任务

选择

新建一个任务名字

git的url

项目源代码的管理,需要账号密码

构建触发器

自定义脚本

在另一台节点安装tomcat,并修改访问权限

[root@node-60 ~]#  yum install java-1.8.0-openjdk-devel -y
[root@node-60 ~]#  yum install tomcat  -y
[root@node-60 ~]# yum install tomcat-admin-webapps -y

#添加管理用户
[root@node-60 ~]# vim /etc/tomcat/tomcat-users.xml 
<tomcat-users>
................
<role rolename="manager-script"/> 
<user username="tomcat" password="tomcat" roles="manager-script"/>

[root@node-60 ~]# tomcat version
Server version: Apache Tomcat/7.0.76
Server built:   Oct 16 2018 09:15:49 UTC
Server number:  7.0.76.0
OS Name:        Linux
OS Version:     3.10.0-693.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_191-b12
JVM Vendor:     Oracle Corporation

#启动tomcat
[root@node-60 ~]# systemctl start tomcat

构建后的操作
执行构建

构建成功
构建完成,太阳代表构建成功,多云代表所有构建中有几次是失败的,阴雨是构建错误失败

构建的war文件就会传递到目标主机的目录下,并自动展开
构建成功后访问目标主机测试网页

4、使用参数,进行回滚操作

  • 使用参数来标记每个版本,便于版本控制,利用参数进行回滚操作
#克隆下来
[root@node-61 ~]# git clone https://github.com/mageedu/spring-boot-web-jsp.git
[root@node-61 ~]# cd spring-boot-web-jsp/

#查询github上的版本
[root@node-61 spring-boot-web-jsp]# git tag -l 
0.2
0.4
0.5
1.0
1.1
1.2
8.0
8.1

修改构建设置
选择参数化构建

选择参数

参数构建设置

源码管理的高级设置
image.png

回滚到1.2版本

参考链接:
DevOps 详解参考:https://www.infoq.cn/article/detail-analysis-of-devops
https://blog.csdn.net/CrankZ/article/details/81545439
https://www.cnblogs.com/liufei1983/p/7152013.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容