CICD中一个巨头--jenkins
持续化集成,发布离不开CICD,CICD中有最重要的一个程序就是jenkins,本章主要讲jenkins部署和建立项目任务
jenkins的出现,大大的提高了代码上线问题,通过图中可以看出,开发人员通过git客户端,将写的代码包丢给gitlub,jenkins会按我们给出的要求规则,自动拉取gitlub里的代码包,然后对它自动的打包,并进行测试,最后测试完成后,推送到tomcat服务器(java运行环境)上。这样的过程,就实现了持续部署与发布。在这里,jenkins是一种web界面,更简单,便捷的管理
由此可见:jenkins是帮我们将代码进行统一的编译打包,还可以放到tomcat容器中进行发布
首先简单了解一下jenkins历史:起源于hudson(商用的,收费的),主要用于持续,自动的构建/测试软件项目,监控一些定时任务,jenkins是用Java语言编写,可在tomcat等流行的容器中运行,也可以独立运行。jenkins通常和版本工具一起使用:git ; jenkins构建工具有:maven,ant,gradle
jenkins主要目标:监控软件开发流程;快速显示问题;提高开发效率;过程控制;
选择它并使用它的原因:它易于配置,并且有强大的测试报告!还有文件识别(识别java中每次构建生成了哪些jar包及使用哪个版本的包);还此次分布式构建;有强大的插件支持!(job任务与build构建)
了解jenkins差不多后,我们开始构建一个完整的CICD集群部署并简单的使用它 !! (这里使用maven工具来构建jenkins)
分以下几步:
- 基础环境部署
- 部署git
- jdk环境部署
- 部署maven
- 部署jenkins
- 管理插件
- 检查错误配置
- jenkins系统配置
- 额外:设置中文
=================================基础环境部署=====================================
代码仓库:使用github
一台服务器:部署jenkins
一台服务器:充当tomcat服务器(业务主机)
安装依赖包:
#yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
=================================部署git=================================
下载最新git包:wget https://mirrors.edge.kermel.org/pub/software/scm/git/
这里我下载的是git-2.9.5版本 (源码)
下载完后编译安装:过程时间长,这里就看图吧
以上完成后,添加环境变量
#echo "PATH=$PATH:$HOME/bin:/usr/local/git/bin" >> vim /etc/bashrc
以上git部署就部署完毕了
=========================jdk环境部署===================================
这里我系统里有jdk了,版本是8的,这里注意一下,本节不能下载9和10版本的jdk,不然会和git版本不对称
=========================部署maven==========================
首先我们要了解一下这是个什么包?maven包作用其实是:当jenkins下载下来的代码后,将其打包的作用。简单来说就是一个打包工具
下载:wget https://mirrors.bit.edu.cn/apache/maven/maven-3/3.5.4/binaries/
# tar xvf apache-maven-3.5.4-bin.tar.gz -C /usr/local/
解压后并修改名
添加maven的环境变量:
<--
PATH=$PATH:$HOME/bin:/usr/local/git/bin
export M2_HOME=/usr/local/maven
export M2=$M2_HOME/bin
PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin
export PATH
-->
保存退出后查看一下是否成功:#mvn -version 出来版本好就是部署成功了
======================================部署tomcat=============================
下载tomcat,,,这里找9.0.版的,防止版本冲突导致报错
下载地址:https://mirrors.bit.edu.cn/apache/tomcat
如图,做以下操作:
图上的环境变量添加以下两行
# CATALINA_HOME=/usr/local/tomcat
# export CATALINA_HOME
注意,不要开启tomcat,先关闭它
================================部署jenkins=================================
下载地址:https://updates.jenkins-ci.org/download/war/
这里我们下载最新的即可----2.264
下载好后是一个war包
下一步将war包部署在tomcat上
# cp jenkins.war /usr/local/tomcat/webapps/
# /usr/local/tomcat/bin/startup.sh
启动完成后,tomcat会自动解压war包
1.接下来我们通过web浏览器来安装jenkins(如图:)
2.按照提示输入后:选择默认的安装(左边)
3.接下来会下载一些必要的插件,绿色是下载没问题,有可能会出现红色,如果出现红色,无非是网络状态不好,点击“重试”即可(千万别点“跳过”)
4.如果以上下载顺利,全部是绿了,会自动跳到以下界面,我们来完成创建用户
这里小编一不小心手快 (0.0)``,创建用户的界面没截上.....这里就不做图了........
5.创建完成后,点击开始使用,jenkins的部署就完成了
6.登陆主页面(完成)
==================================管理插件==================================
以上jenkins虽已经部署好
如果是以上插件加载中失败该怎么办?对于工作中如何添加必要的插件该怎么装?
首先我们要解决以上问题,因为我们是自动化部署的,所以要做一下小改动(1,2,3,4)步
1,安装插件deploy to container工具包(在cicd流程中是将代码推送给tomcat的一个工具)
选择mange插件管理
搜索,勾选后,点击“直接下载”
2,安装插件maven intergtion
和以上插件安装方法一样
3,安装git相关3个插件 (github authentication / github branch source / github organization folder )
和以上插件安装方法一样
4,安装插件:Publish over ssh
和以上插件安装方法一样
以上每一个安装插件,最后都会显示完成即可:
=================================检查错误配置=================================
1,系统错误
如果有字符乱码问题,可以到tomcat>conf>server,xml文件中添加即可
1 <?xml version="1.0" encoding="UTF-8"?>
如果有反向代理的错误,请忽略
================================jenkins系统设置=================================
这里没有强调就都设置为默认即可
还有一个全局配置:在这里我们配置一下jdk,git,maven的根目录(因为在装jenkins前,我们装了这三个软件,jenkins并不知道它们在哪里)
这里的系统配置也是在web界面配置
选择全局配置
进入后,点击新增即可
以上修改完后,点击保存退出即可
==============================额外:设置中文=============================
(设置jenkins为中文页面:
1,首先先装一个插件:locale plugin
2,到系统设置里面,找到 default language
写:zh_CN
=======================================================================
下一章我们将进行任务部署----模拟代码上线的过程----
CICD中一个巨头--jenkins的更多相关文章
- 第四十二章 微服务CICD(4)- jenkins + gitlab + webhooks + publish-over-ssh(2)
上一节完成了"当git客户端push代码到gitlab后,jenkins会立即去gitlab拉取代码并构建". 目的:本节完成jenkins自动构建之后,自动的将jar包部署到应用 ...
- 在 Intellij 中设置集成 Jenkins 服务器连接
如何在 Intellij 中设置集成 Jenkins 服务器连接 在Intellij中可以很方便的设置Jenkins服务器,不用登录到浏览器中,在Intellij中即可浏览所有job,开发plugin ...
- Sql Server 中一个非常强大的日期格式化函数
Sql Server 中一个非常强大的日期格式化函数Select CONVERT(varchar(100), GETDATE(), 0)-- 05 16 2006 10:57AMSelect CONV ...
- oracle 编译中一个关于clntsh 库的一个 帖子 ,收藏!
oracle 编译中一个关于clntsh 库的一个 帖子 ,收藏! ------------------------------------------------------------------ ...
- php中一个"异类"语法: $a && $b = $c;
php中一个"异类"语法: $a && $b = $c; $a = 1;$b = 2;$c = 3;$a && $b = $c;echo & ...
- oracle中一个字符串包含另一个字符串中的所有字符
oracle中一个字符串包含另一个字符串中的所有字符 --解决监理报告中所勾选的标段信息,与该用户所管理的标段字符串不匹配的问题. select * from a where instr(a,b)&g ...
- Spark小课堂Week7 从Spark中一个例子看面向对象设计
Spark小课堂Week7 从Spark中一个例子看面向对象设计 今天我们讨论了个问题,来设计一个Spark中的常用功能. 功能描述:数据源是一切处理的源头,这次要实现下加载数据源的方法load() ...
- Android中一个类实现的接口数不能超过七个
近期一段时间,在开发Android应用程序的过程中,发现Android中一个类实现的接口数超过七个的时候,常常会出现超过第7个之后的接口不能正常使用.
- Linux中一个文件10行内容,如何输出5-8内容到屏幕
题目是这样的,Linux中一个文件10行内容,如何输出5-8内容到屏幕首先我们模拟一下这样的环境: [root@localhost question]# pwd /root/question [roo ...
- [20180904]工作中一个错误.txt
[20180904]工作中一个错误.txt --//昨天看我提交一份修改建议,发现自己写的sql语句存在错误.--//链接:http://blog.itpub.net/267265/viewspace ...
随机推荐
- 重写父类的ToString
我们任何对象调用ToString的时候,打出来的都是这个类的命名空间的名字 using System; using System.Collections.Generic; using System.L ...
- QML笔记
文章钢要: 1.qml基础知识 2.qml语言技巧 一.QML basic types QML Language提供的基础类型:int ,bool,string,double,real,var,url ...
- 论文阅读: CCF A 2021 PROGRAML:用于数据流分析和编译器优化的基于图的程序表示 (PMLR)
Motivation: 编译器实现是一项复杂而昂贵的活动.出于这个原因,人们对使用机器学习来自动化各种编译器任务产生了极大的兴趣,大多数工作都将注意力限制在选择编译器启发式或做出优化决策.现有的基 ...
- windows下解决getAddressInfo Failed的一种办法
从九点到现在,解决完这个问题就四点了,其实不难,只是第一次遇到和我太菜. 就是管理员身份打开命令行然后输入ipconfig /flushdns,作用是刷新dns解析缓存,这还不够,如果只做这一步,重启 ...
- 《CSOL大灾变》Mobile开发记录——武器音效部分
在前端时间开发了武器系统的大部分逻辑,从武器购买界面,武器购买逻辑到游戏逻辑(拾起和丢弃武器)等都开发得差不多了.剩下的仅仅只是增加武器数据(模型,动画和音效,特效等等),然后用统一脚本逻辑定义载入游 ...
- lowcodeEngine 组件面板的拖拽功能
设计器和渲染器处在不同的 Frame 渲染器以单独的 iframe 嵌入,xxx-simulator-renderer 通过和 host进行通信来和设计器打交道,比如点击渲染画布任意一个位置,需要能计 ...
- 使用Libusb测试USB device
一. 先准备好测试工具 -- Libusb: 在Linux中使用的话: 首先从 http://www.libusb.org/官网中下载libusb 然后解压之后./configure --> m ...
- Usage of Seven Zip in C#
Compresss by Squid-Box.SevenZipSharp.Lite choose x86/x64 7z dll if (IntPtr.Size == 4) { SevenZipExtr ...
- Linux 第六节( 磁盘系统,挂载,分区,格式化)
/dev/st0 磁带机 /dev/lp 打印机 /dev/cdrom 光驱 /dev/sd scsi接口硬盘 sata接口硬盘 U盘(sda,sdb,sdc 分别对应 ...
- Pycharm报错:Error running ‘‘: Cannot run program “\python.exe“ (in directory ““)系统找不到指定文件夹?已解决!
问题报错 报错原因:我修改的工程的名称/或者移动了工程位置,运行导致找不到之前的运行路径 解决办法1.在该项目文件夹下找到一个叫.idea的文件夹.(若没有,选择显示隐藏项目,可能被隐藏了)PyCha ...