day17-day20_项目实战项目部署

万信金融 项目部署

目标:

  1. 理解DevOps概念

  2. 能够使用Docker Compose部署项目

  3. 理解持续集成的作用

  4. 会使用Jenkins进行持续集成

1 DevOps介绍

1.1 什么是DevOps

DevOps是Development和Operations两个词的缩写,引用百度百科的定义:

DevOps是一种方法或理念,它涵盖开发、测试、运维的整个过程。DevOps是提高软件开发、测试、运维、运营等各部门的沟通与协作质量的方法和过程,DevOps强调软件开发人员与软件测试、软件运维、质量保障(QA)部门之间有效的沟通与协作,强调通过自动化的方法去管理软件变更、软件集成,使软件从构建到测试、发布更加快捷、可靠,最终按时交付软件。

2 使用Docker Compose部署项目

 详见"万信金融-生产环境-部署文档.pdf"

3 持续集成

3.1 持续集成介绍

3.1.1问题描述

传统的软件开发流程如下:

1、项目经理分配模块给开发人员

2、每个模块的开发人员并行开发,并进行单元测试

3、开发完毕,将代码集成部署到测试服务器,测试人员进行测试。

4、测试人员发现bug,提交bug、开发人员修改bug

5、bug修改完毕再次集成、测试。

问题描述:

1、模块之间依赖关系复杂,在集成时发现大量bug

2、测试人员等待测试时间过长

3、集成部署耗时耗力,软件交付无法保障

解决上述问题的思考:

1、能否把集成测试提前进行?能否放在平时每隔几天甚至每天都进行?

2、人工集成部署耗时耗力,能否使用自动化工具代替人工集成部署的过程?

3.1.2 什么是持续集成

持续集成,即Continuous Integration,简称CI,随着软件开发复杂度的不断提高,团队开发成员间如何更快更好的协同工作以确保软件开发的质量已经成为一个不可回避的问题。尤其是近年来如何能在不断变化的需求中快速适应和保证软件的质量显得尤其的重要,持续集成就是针对此类问题的一种软件协同实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成, 而每次的集成都是通过自动化的构建来实现的,包括自动获取仓库代码、自动编译、自动发布和测试,从而尽可能早的发现问题,让团队能更快的开发高质量的软件。

持续集成的好处:

1、自动化集成部署,提高了集成效率。

2、更快的修复问题。

3、更快的进行交付。

4、提高了产品质量。

3.1.3 P2P项目持续集成流程

3.2 搭建持续集成环境

3.2.1 安装Git/Gogs

Git是一个版本控制系统,Gogs是一个远程的Git仓库,Gogs与GitHub、GitLab及国内的码云类似,用户在Gogs上注册账号,上传项目到Gogs,通过Gogs对项目进行版本控制。通常企业使用Gogs在局域网搭建自己的Git代码管理仓库,不过随着云计算的发展,很多企业也开始使用提供Git仓库管理公共服务的平台,比如:码云、GitHub等。

Gogs相比GitLab的优势在于:Gogs 能打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。

在Linux服务器上安装Gogs,安装方法见“Gogs安装文档.pdf” 。

3.2.2 安装 Jenkins

Jenkins是一个开源的持续集成工具,使用Jenkins搭建持续集成环境,可以进行自动构建、自动编译和自动部署,非常方便。它提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更重要的业务逻辑实现上。简单的说,Jenkins就是一个Web应用程序,这个程序的作用就是提供持续集成所需的所有功能 。官网地址:Jenkins 。

=============安装 Jenkins:Start

Jenkins安装文档

一. 安装Jenkins

docker pull jenkins/jenkins:2.440.3

mkdir -p /mydata/jenkins_home

chown -R 1000 /mydata/jenkins_home/

docker run -di --name=jenkins -p 8091:8080 -v /mydata/jenkins_home/:/var/jenkins_home jenkins/jenkins:2.440.3

本教程在docker下安装Jenkins:

  1. 拉取镜像:

docker pull jenkinsci/blueocean
  1. 创建容器:

docker create --name jenkins -u root -p 8091:8080 --privileged=true  -v jenkins-data:/var/jenkins_home  -v /var/run/docker.sock:/var/run/docker.sock   -v /home/jenkins:/home  docker.io/jenkinsci/blueocean
  1. 启动容器:

docker start jenkins
  1. 通过浏览器访问http://ip:8091

初次运行Jenkins会经过一个安装过程,一般情况使用默认配置,一直下一步安装即可,其中一步需要输入密码,如下图所示:

分别执行如下命令即可得到初始密码(账户名默认是admin)

docker exec -it jenkins /bin/bash
​
cat /var/jenkins_home/secrets/initialAdminPassword

建议首次登录成功后,修改密码。

二. Jenkins常用插件安装

要想让Jenkin更好的和其他工具集成到一起工作,就需要安装一些常用的插件。

搜索如下插件并安装:

 

 

三. Jenkins全局工具配置

Jenkins在进行持续集成工作时依赖Jdk1.8、Git、maven,所以需要进行一些全局工具配置,如下图所示:

1、Maven安装:

可以采用“自动安装”,在上图中勾选自动安装,选择maven版本即可。或将maven程序目录拷贝到宿主机/home下,按上图进行配置即可。

2、Jdk安装配置

与maven安装相同,也可以采用自动安装或手动安装的方法。

3、Git安装方法同上

git安装完成配置如下图:

4、配置git凭证

此凭证用于远程从git仓库获取工程源代码,输入git仓库的账号和密码

有了该凭证后,Jenkins即可以从Gogs仓库中获取项目源码。

=============安装 Jenkins:end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/5075.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《C语言深度解剖》(10):数组指针、指针数组和数组指针数组

🤡博客主页:醉竺 🥰本文专栏:《C语言深度解剖》《精通C指针》 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多C语言深度解剖点击专栏…

重学java 26.面向对象 内部类⭐

“别担心,你一定能如愿。” —— 24.4.29 1.什么时候使用内部类: 当一个事物的内部,还有一个部分需要完整的结构去描述,而内部的完整结构又只为外部事物提供服务,那么整个内部的完整结构最好使用内部类 比如&#xff1…

人工智能论文:BERT和GPT, GPT-2, GPT-3 的简明对比和主要区别

在BERT的论文里面: 2018.10 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding,BERT已经解释了BERT,GPT,ELMo的区别。 *ELMo为双向RNN,请忽略。 主要区别: BERT使用的是…

49. 【Android教程】HTTP 使用详解

在你浏览互联网的时候,绝大多数的数据都是通过 HTTP 协议获取到的,也就是说如果你想要实现一个能上网的 App,那么就一定会和 HTTP 打上交道。当然 Android 发展到现在这么多年,已经有很多非常好用,功能非常完善的网络框…

信息系统项目管理师0078:安全系统(5信息系统工程—5.4安全工程—5.4.2安全系统)

点击查看专栏目录 文章目录 5.4.2安全系统1.安全机制2.安全服务3.安全技术5.4.2安全系统 信息安全保障系统一般简称为信息安全系统,它是“信息系统”的一个部分,用于保证“业务应用信息系统”正常运营。现在人们已经明确,要建立一个“信息系统”,就必须要建立一个或多个业务…

hive使用hplsql进行etl或其它数据加工

参照 https://cwiki.apache.org/confluence/pages/viewpage.action?pageId59690156 http://www.hplsql.org/doc Hive HPL/SQL,即Hive Hybrid Procedural SQL一个开源工具,它为hive实现了过程性的SQL功能,类似Oracle的PLSQL。从hive 2.0.0开…

RustGUI学习(iced)之小部件(四):如何使用单选框radio部件?

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 概述…

Python量化炒股的获取数据函数—get_concept()

查询股票所属的概念板块函数get_concept(),利用该函数可以查询一只或多只股票所属的概念板块,其语法格式如下: get_concept(security, dateNone)security:标的代码。类型为字符串,形式如‘000001.XSHE’,或…

k8s安装nginx Ingress超详细指南

在本全面的 Ingress 指南中,您将学习如何在 Kubernetes 上设置 Nginx Ingress控制器并使用 DNS 配置 Ingress。 目前有两种 Nginx Ingress 控制器。 kubernetes 社区的 Nginx Ingress 控制器Nginx Inc 开发的 Nginx Ingress 控制器 我们将使用 Kubernetes 社区 N…

使用QT完成如图的游戏登录界面 使用信号和槽完成密文明文密码转换,重置账号和密码,登录校验 详细代码在主页下载

头文件: #ifndef LOGINWIDGET_H #define LOGINWIDGET_H #include <QLineEdit> #include <QPushButton> #include <QWidget> class LoginWidget : public QWidget {Q_OBJECT public: LoginWidget(QWidget *parent = 0); ~LoginWidget(); public slots: …

【银角大王——Django课程——用户表的基本操作】

Django课程——用户表的基本操作 模板的继承用户管理用户列表展示新建用户Django组件原始方法【麻烦&#xff0c;太原始】form组件modelform组件 使用modelsform组件编写添加页面 模板的继承 &#xff08;1&#xff09;先写一个页面模板————这个案例中的模板基本上就是一个…

JAVA基础——集合框架(List与Set)

数据结构 什么是数据结构 数据结构就是用来装数据以及数据与之间关系的一种集合。如何把相关联的数据存储到计算机&#xff0c;为后续的分析提供有效的数据源&#xff0c;是数据结构产生的由来。数据结构就是计算机存储、组织数据的方式。好的数据结构&#xff0c;让我们做起事…

【统计推断】-01 抽样原理之(三)

文章目录 一、说明二、抽样分布三 均值抽样分布3.1 有限母体无放回抽样3.2 有限母体有放回抽样3.3 无限母体 四、比例抽样分布五、和差抽样分布 一、说明 上文中叙述母体和抽样的设计&#xff1b;以及抽样分布的概念&#xff0c;本篇将这种关系定量化&#xff0c;专门针对抽样的…

练习题(2024/4/29)

在深度优先遍历中&#xff1a;有三个顺序&#xff0c;前中后序遍历 这里前中后&#xff0c;其实指的就是中间节点的遍历顺序&#xff0c;只要记住 前中后序指的就是中间节点的位置就可以了。 如图 1二叉树的前序遍历 给你二叉树的根节点 root &#xff0c;返回它节点值的 前…

Linux学习之Tcp与Udp

目录 UDP Udp协议的格式 UDP的传输特性 UDP的缓冲区 基于UDP的应用层协议 TCP协议 TCP的报文格式 1.ACK确认应答机制 2.超时重传 3.TCP的链接管理机制 为什么要三次握手呢&#xff1f; 理解TIME_WAIT状态 流量控制&#xff08;可靠性效率&#xff09; 滑动窗口 拥塞…

CTFHub-Web-SSRF

CTFHub-Web-SSRF-WP 一、内网访问 1.题目提示说访问127.0.0.1的flag.php&#xff0c;在URL后面添加路径没想到直接访问成功 二、伪协议读取文件 1.题目提示说访问Web目录下的flag.php&#xff0c;联想到Web目录一般存放于/var/www/html/里&#xff0c;去修改URL尝试进行访问…

stm32f103c8t6学习笔记(学习B站up江科大自化协)-UNIX时间戳、BKPRTC

UNIX时间戳 UNIX时间戳最早是在UNIX系统使用的&#xff0c;所以叫做UNIX时间戳&#xff0c;之后很多由UNIX演变而来的系统也继承了UNIX时间戳的规定&#xff0c;目前linux&#xff0c;windows&#xff0c;安卓这些操作系统的底层计时系统都是用UNIX时间戳 时间戳这个计时系统和…

Java对接高德api搜索POI 2.0 关键字搜索

目录 一、注册账号 二、搜索小demo 1.首先要引入依赖 2. 然后查看打印结果即可 三、搜索接口代码 1.引入依赖 2.yml配置 2.Controller 3.静态工具类 四、运行测试 一、注册账号 高德开放平台 | 高德地图API 注册高德开发者&#xff1b;去控制台创建应用&#xff…

Arco design 发布到生成环境F5刷新报错404

问题&#xff1a;开发环境没问题&#xff0c;生成环境正常跳转也没问题但是F5刷新报错 解决办法一&#xff1a;修改 history: createWebHistory(), 改为history: createWebHashHistory(),

在Ubuntu linux操作系统上操作MySQL数据库常用的命令

检查是否安装了MySQL&#xff0c;或检查MySQL的状态&#xff1a; sudo systemctl status mysql或 sudo systemctl status mysql.service如果mysql有安装&#xff0c;上面这条命令会返回mysql的状态active或inactive。 卸载mysql数据库 第一步是停了数据库&#xff1a; sud…