技术标签: 云原生 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 系统当中。
文章浏览阅读895次。第一编 验证的重要性 验证,顾名思义就是通过仿真、时序分析、上板调试等手段检验设计正确性的过程,在FPGA/IC开发流程中,验证主要包括功能验证和时序验证两个部分。为了了解验证的 重要性,我们先来回顾一下FPGA开发的整个流程。FPGA开发流程和IC的开发流程相似,主要分为以下几个部分:1)设计输入,利用HDL输入工具、原理图输入工具或状态机输入工具等把所要设计的电路描_fpga工程进行验证的过程中,通过哪些方法可以提生验证活动的完备性和准确性
文章浏览阅读291次。1、多个播报指令播报时,需要监听该会话下播报【结束】的状态再发送,否则播报指令将可能出现丢失,数智人只播报最新的一条指令。调用【新建视频流会话接口】获取[sessionId]会话唯一标识,[PlayStreamAddr]播放地址。2、播放流采用rtmp协议时,视频会存在3s左右的延迟,请妥善处理播报监听状态,以及数智人结束时的操作时机。,第三步:建立会话长链接(websocket)-监听数智人播报内容,以及播报状态。第五步:关闭会话-数智人停止播放。第四步:发送指令-进行播报。_腾讯云智能数智人开发对接
文章浏览阅读380次。给出一个正整数 ,请判断 是否可以被表示为两个正整数的立方之和。用map去存立方数,枚举第一个数,在通过map证明第二个数的存在。接下来有 组测试数据,每组仅一行一个正整数 ( )。第一行仅有一个正整数 ( ),表示测试数据的组数。若 能被表示为两个正整数的立方之和,输出;注意开longlong。2、立方和–1100。..._给定一个正整数x。 检查数字x是否可以表示为两个正整数的立方和
文章浏览阅读451次。4.1 引言4.2 平衡吸附4.2.1 吸附等温线及迁移方程中的吸附项4.2.2 有机化合物的吸附4.2.3 离子交换4.3 吸附动力学4.4 一级不可逆反应4.5 莫诺动力学反应4.6 多组分动力学反应4.7 双域系统中的化学反应
文章浏览阅读3.1k次。第1关:XPath解析网页本关任务:在 XPath 基础实训中,介绍了 XPath 的基础知识,本关需要使用 XPath 技术来编写解析网页的程序。import urllib.requestfrom lxml import etreedef get_data(url): ''' :param url: 请求地址 :return: None ''' response=urllib.request.urlopen(url=url) _本关任务:在 xpath 基础实训中,介绍了 xpath 的基础知识,本关需要使用 xpath 技术
文章浏览阅读643次,点赞2次,收藏2次。鸿蒙Harmony 拖动监听DraggedListener效果图源码地址https://gitee.com/liukerui/harmony-app-examples.git_鸿蒙 监听扫码枪
文章浏览阅读1.4k次。天空的蟾月已经西斜,渐渐星稀,东方的天际已经泛红,霞蔚铺开,舒展的云朵悄然飘来。嗡嗡嗡......是破山寺的钟声隐隐传来,一波一波的梵音经颂,几多心灵撼动,净里的天籁之音。犹记得尚湖的丝藕、那么的清脆,山麓上一树树挂着的一颗颗如红玛瑙枣仁的甜,毛栗子那么多刺,你会剥开的吃吗。家里的小院两棵橘树该挂满了如照着的红红的灯笼!耳畔阵阵唳唳的啭音传来,报着秋爽、韵着秋声,抬头望,长空里一字的雁行、点、点、..._徐辉的痛苦回忆
文章浏览阅读630次。这里用到的Linux系统是centos7系统,centos7是自带py的但是py的2.7.5版本 连接服务器的使用的是SSH Secure shell1.首先安装依赖包1)安装gcc编译器 gcc编译器有些系统版本已经默认安装了,可以通过 gcc --version进行查看 安装gc..._python3.7 安装 linux
文章浏览阅读9.5k次。当点击按钮时modal的位置看起来很不舒服, 解决办法总结有两: 1.使用modal 弹出事件方法; 从官方文档中可以了解到, modal组件有不少事件接口: 其中 “shown.bs.modal”可以在弹窗框出现后 做一些处理, 更改弹出框的样式当然是可以的: script type="text/javascript"> $(_bootstrap3 弹出框 垂直居中
文章浏览阅读1.1k次。P4 实现了一种 Programmable Match-Action Pipeline(流水线可编程)架构,作为 Pipeline,就是:开发者可以自定义 Match Fields、自定义 Action Type、从而实现自定义的 Match-Action Table,再由多张这样的 Tables 进而形成一条 Pipeline。_p4 dsl
文章浏览阅读4.5w次,点赞80次,收藏158次。玩过游戏的朋友都知道,市面上最常见的游戏多数分为2D和3D两种。2D和3D游戏之间的差异大家都知道,一个是类似纸片游戏属于二维层面,另一个则是在3D立体空间中游玩。其中还夹杂着一个2.5D游戏,本篇文章就来讲一下怎么通过Unity进行2.5D游戏是怎样的以及如何制作2.5D游戏。制作方法很简单,文中使用到了Tile Map Editor制作2D地图,通过控制相机角度来形成伪3D来制作2.5D效果的游戏。下面就一起来看看到底是怎样制作的吧!_unity 开发2.5d游戏
文章浏览阅读6.3k次,点赞3次,收藏9次。;************************************************************实验代码datarea segment mess1 db 'Please enter character string : ',13,10,'$'_汇编分类统计字符个数