技术标签: 云原生 devops 云原生/云计算 - 入门到实战 jenkins 开发工具/开发语言 云计算
目录
持续集成(Continuous Integration,CI)。随着软件开发复杂度的不断提高,如何更好的协同开发以确保软件开发质量已经成为了开发团队所追求的目标,特别是近年来 “敏捷开发” 在互联网领域的兴起,如何能够在不断变化的需求中快速适应和保证开发质量显得尤为重要。
持续集成就是针对这类问题的一种软件开发实践,倡导团队必须经常集成他们的工作,而每次的集成都是通过自动化的构建来验证的,包括自动编译、发布、测试,从而更快发现集成错误,让团队更快的开发内聚的软件。
持续集成具有以下特点:
- 是一个自动化的周期性的集成测试过程,从检出代码、编译构建、运行测试,再到结果记录、测试统计等都是自动完成,无需人工干预
- 需要有专门的集成服务器来执行集成构建
- 需要有代码托管工具支持
持续集成的出现,保证开发团队交代码的质量,减轻了软件发布时的压力;其次就是全程自动完成,无需太多人工干预,极大的减少了重复的过程,节省了时间、工作量和成本。
Jenkins 原名 Hudson,2011 年修改为 Jenkins,它是一个开源的实现软件持续集成的工具。官网地址如下(也有中文网址):
Jenkins 能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还可以用图表的形式形象的展示项目构建的趋势和稳定性。
Jenkins 具有以下特点:
- 易安装:官网下载直接运行
- 易配置:提供了友好的 GUI 配置界面
- 变更支持:能从代码仓库中获取并产生代码更新列表,输出到编译输出信息
- 支持永久链接:用户是通过 Web 来访问 Jenkins 的,而这些 Web 界面的链接地址是永久的,可在任何文档中直接使用
- 集成 E-mail/RSS/IM
- JUnit/Test NG 测试报告:以图表形式提供测试报告
- 文件指纹信息:会保存哪次集成构建产生了哪些 jars 文件,哪次集成使用了哪个版本的 jars 文件等记录
- 支持第三方插件
第一步,下载 Jenkins 安装包,打开Jenkins 官方文档;
点击 “Installing Jenkins”,可以看到可供下载的各个版本;
选择 Linux(演示虚拟机为 CentOS 系统)下的 CentOS 系统;
可以看到官方提供的在线安装方式;
打开 Xhell 并连接虚拟机/服务器,按照以下步骤进行下载;
# 下载镜像
wget -O /etc/yum.repos.d/jenkins.repo \
https://pkg.jenkins.io/redhat-stable/jenkins.repo
# 安装
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# 更新
yum upgrade
# 安装 Java 环境
yum install java-11-openjdk
#安装 Jenkins
yum install jenkins
Jenkins 安装完成之后,就可以使用 虚拟机/服务器IP:端口 在本地进行访问了,初始界面如下;
根据提示密码存于 /var/lib/jenkins/secrets/initialAdminPassword 目录中;
输入密码后进入如下界面;
我们选择安装推荐的插件,Jenkins 便会开始自动下载安装,如下正在安装;
安装完成后,创建我们的第一个用户;
进入 Jenkins 主页如下;
使用推荐安装方式只能帮我们安装一部分最为常用的插件,有某些插件如 maven 等还是需要我们手动去安装的。
点击 “系统管理” --> “插件管理”;
在这里可以看到我们需要的插件,按需下载即可;
# rpm卸载Jenkins
rpm -e jenkins
# 检查是否卸载成功
rpm -ql jenkins
# 彻底删除残留文件
find / -iname jenkins | xargs -n 1000 rm -rf
全局配置的目的在于告诉 Jenkins 各种工具的路径在何处,使得 Jenkins 能够通过插件来调用这些软件。我们这里均采用下载压缩包然后上传虚拟机/服务器的方式进行演示。
点击“系统管理” --> “全局配置”,可以看到需要配置的插件,需要配置的有 jdk、git、maven 工具;
(直接使用 yum 命令安装虽然更为简单但版本会很低,为防止今后报错所以推荐此方式安装)
首先下载 git 压缩包并上传至虚拟机/服务器;
按照以下步骤进行操作;
#1.解压压缩包
tar -zxvf git-2.27.0.tar.gz
#2.在Linux系统中是需要编译源码的,首先下载所需要的依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
#3.卸载旧版本的 git(安装依赖是会自动安装 git,所以需要卸载旧版本)
yum -y remove git
#4.进入解压后的文件夹
cd git-2.27.0
#5.编译git源码
make prefix=/usr/local/git all
#6.安装git至/usr/local/git路径
make prefix=/usr/local/git install
#7.配置环境变量
vi /etc/profile
在底部加上该行代码:export PATH=$PATH:/usr/local/git/bin
#8.配置完成后刷新环境变量
source /etc/profile
操作完成之后使用命令 git --version 查看 git 版本,如下 2.27 版本安装成功;
[root@192 git-2.27.0]# git --version
git version 2.27.0
此时我们查看一下 git 路径 which git;
[root@192 git-2.27.0]# which git
/usr/local/git/bin/git
使用该路径设置全局配置;
下载一个 jdk 的 rpm 包并上传至虚拟机/服务器;
然后使用命令 rpm -ivh jdk-8u171-linux-x64.rpm 进行安装;
安装后的根目录为 /usr/java/jdk1.8.0_171-amd64;
使用此路径设置全局;
下载 apache-maven .tar.gz 包并上传至虚拟机/服务器;
解压压缩文件;
使用此路径及解压后的文件名设置全局;
全部配置完成之后,点击保存、点击应用。
Gogs 是一款极易搭建的自助 Git 服务,它的目标在于打造一个最简单、快速和轻松的方式搭建 Git 服务。使用 Go 语言开发的它能够通过独立的二进制进行分发,支持了 Go 语言支持的所有平台,包括 Linux、Mac OS、Windows 以及 arm 平台。与传统 Git 相比它最大的优势在于拥有图形化界面。
第一步:下载镜像 docker pull gogs/gogs;
[root@192 ~]# docker pull gogs/gogs
Using default tag: latest
latest: Pulling from gogs/gogs
97518928ae5f: Pull complete
d20a5437c0b4: Pull complete
ec9934e62f5f: Pull complete
2a880a4f6876: Pull complete
7bb13647629b: Pull complete
641b202f48eb: Pull complete
8f12f9a5cd7d: Pull complete
Digest: sha256:fbae7c126411d3fa3f8fdca17a65b196887ab23e3b7375f682a13daf5806bb19
Status: Downloaded newer image for gogs/gogs:latest
docker.io/gogs/gogs:latest
[root@192 ~]#
第二步:创建 Gogs 容器 docker run -di --name=gogs -p 10022:22 -p 3000:3000 -v /var/gogsdata:/data gogs/gogs;
# 容器名称 gogs
# 端口映射,22 端口映射为 10022,3000 端口映射为 3000
[root@192 ~]# docker run -di --name=gogs -p 10022:22 -p 3000:3000 -v /var/gogsdata:/data gogs/gogs
3af9726ff2d9430be43f7f3d78c206b9a53d356347e8a92c23316a7d2e6533f8
[root@192 ~]#
第三步:在本地浏览器进行访问,初始界面如下;
此处选择数据库类型为 SQLite3
修改域名为 192.168.200.129
修改应用 URL 为 http://192.168.200.129:3000/
随后点击“立即安装”,Gogs 安装与配置完成;
首先我们创建一个仓库;
创建成功后就可以将代码上传至仓库了;
这里我使用 idea(本地 git 环境已搭建,这里不再赘述)以及一个示例项目演示上传操作;
选中项目,右键点击 “file” --> “git” --> “Repository” --> “Reomtes”;
接下来增加远程地址,也就是我们 Gogs 远程仓库的地址;
此时就可以进行代码上传了,先点击 “Git” --> “Add”,将项目上传至暂存区;
选择 “git” --> “Repository” --> “push” 进行推送;
输入用户名和密码登录 Gogs 后即可推送成功;
此时再次查看 Gogs 中的仓库,可以看到项目已上传至 Gogs 仓库;
代码上传至 Git 演示成功。
登入 Jenkins,点击 “新建 Item”,输入任务名称并选择“构建一个maven项目”;
点击“确定”,之后我们作出如下配置;
项目描述
源码管理
build
配置完成,点击保存,项目即创建完成;
返回面板,点击按钮执行此任务;
此操作相当于我们将项目文件的执行过程拿到了 Jenkins 系统当中。
文章浏览阅读331次。第一部分:准备工作1 安装虚拟机2 安装centos73 安装JDK以上三步是准备工作,至此已经完成一台已安装JDK的主机第二部分:准备3台虚拟机以下所有工作最好都在root权限下操作1 克隆上面已经有一台虚拟机了,现在对master进行克隆,克隆出另外2台子机;1.1 进行克隆21.2 下一步1.3 下一步1.4 下一步1.5 根据子机需要,命名和安装路径1.6 ..._创建一个hadoop项目
文章浏览阅读1.7k次。心脏滴血漏洞HeartBleed CVE-2014-0160 是由heartbeat功能引入的,本文从深入码层面的分析该漏洞产生的原因_heartbleed代码分析
文章浏览阅读1.4k次。前言ofd是国家文档标准,其对标的文档格式是pdf。ofd文档是容器格式文件,ofd其实就是压缩包。将ofd文件后缀改为.zip,解压后可看到文件包含的内容。ofd文件分析工具下载:点我下载。ofd文件解压后,可以看到如下内容: 对于xml文件,可以用文本工具查看。但是对于印章文件(Seal.esl)、签名文件(SignedValue.dat)就无法查看其内容了。本人开发一款ofd内容查看器,..._signedvalue.dat
文章浏览阅读1.8w次,点赞29次,收藏313次。整体系统设计本设计主要是对ADC和DAC的使用,主要实现功能流程为:首先通过串口向FPGA发送控制信号,控制DAC芯片tlv5618进行DA装换,转换的数据存在ROM中,转换开始时读取ROM中数据进行读取转换。其次用按键控制adc128s052进行模数转换100次,模数转换数据存储到FIFO中,再从FIFO中读取数据通过串口输出显示在pc上。其整体系统框图如下:图1:FPGA数据采集系统框图从图中可以看出,该系统主要包括9个模块:串口接收模块、按键消抖模块、按键控制模块、ROM模块、D.._基于fpga的信息采集
文章浏览阅读2.5w次。1.背景错误信息:-- [http-nio-9904-exec-5] o.s.c.n.z.filters.post.SendErrorFilter : Error during filteringcom.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud..._com.netflix.zuul.exception.zuulexception
文章浏览阅读358次。1.介绍图的相关概念 图是由顶点的有穷非空集和一个描述顶点之间关系-边(或者弧)的集合组成。通常,图中的数据元素被称为顶点,顶点间的关系用边表示,图通常用字母G表示,图的顶点通常用字母V表示,所以图可以定义为: G=(V,E)其中,V(G)是图中顶点的有穷非空集合,E(G)是V(G)中顶点的边的有穷集合1.1 无向图:图中任意两个顶点构成的边是没有方向的1.2 有向图:图中..._给定一个邻接矩阵未必能够造出一个图
文章浏览阅读321次。(十二)、WDS服务器安装通过前面的测试我们会发现,每次安装的时候需要加域光盘映像,这是一个比较麻烦的事情,试想一个上万个的公司,你天天带着一个光盘与光驱去给别人装系统,这将是一个多么痛苦的事情啊,有什么方法可以解决这个问题了?答案是肯定的,下面我们就来简单说一下。WDS服务器,它是Windows自带的一个免费的基于系统本身角色的一个功能,它主要提供一种简单、安全的通过网络快速、远程将Window..._doc server2012上通过wds+mdt无人值守部署win11系统.doc
文章浏览阅读219次。python–xlrd/xlwt/xlutilsxlrd只能读取,不能改,支持 xlsx和xls 格式xlwt只能改,不能读xlwt只能保存为.xls格式xlutils能将xlrd.Book转为xlwt.Workbook,从而得以在现有xls的基础上修改数据,并创建一个新的xls,实现修改xlrd打开文件import xlrdexcel=xlrd.open_workbook('E:/test.xlsx') 返回值为xlrd.book.Book对象,不能修改获取sheett_xlutils模块可以读xlsx吗
文章浏览阅读8.2w次,点赞267次,收藏656次。运行Selenium出现'WebDriver' object has no attribute 'find_element_by_id'或AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath'等定位元素代码错误,是因为selenium更新到了新的版本,以前的一些语法经过改动。..............._unresolved attribute reference 'find_element_by_id' for class 'webdriver
文章浏览阅读198次。一:模态窗口//父页面JSwindow.showModalDialog(ifrmehref, window, 'dialogWidth:550px;dialogHeight:150px;help:no;resizable:no;status:no');//子页面获取父页面DOM对象//window.showModalDialog的DOM对象var v=parentWin..._jquery获取父window下的dom对象
文章浏览阅读1.7w次,点赞15次,收藏129次。算法(algorithm)是解决一系列问题的清晰指令,也就是,能对一定规范的输入,在有限的时间内获得所要求的输出。 简单来说,算法就是解决一个问题的具体方法和步骤。算法是程序的灵 魂。二、算法的特征1.可行性 算法中执行的任何计算步骤都可以分解为基本可执行的操作步,即每个计算步都可以在有限时间里完成(也称之为有效性) 算法的每一步都要有确切的意义,不能有二义性。例如“增加x的值”,并没有说增加多少,计算机就无法执行明确的运算。 _算法
文章浏览阅读1.5k次,点赞18次,收藏26次。网络安全的标准和规范是网络安全领域的重要组成部分。它们为网络安全提供了技术依据,规定了网络安全的技术要求和操作方式,帮助我们构建安全的网络环境。下面,我们将详细介绍一些主要的网络安全标准和规范,以及它们在实际操作中的应用。_网络安全标准规范