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使用的是…

SpringBoot整合Mybatis实现多数据源配置

文章目录 I Mybatis1.1 数据库连接相关配置1.2 定义读取文件名1.3 为单个SqlSession动态设置隔离级别1.4 mybatis-plus代码生成器II pagehelper分页2.1 pagehelper配置2.2 使用方法III mybatis-plus多数据源配置IV 数据库连接池4.1 Druid的属性配置4.2 监控配置4.3 展示Druid的…

微信小程序实现用户手机号授权

以下代码均使用uniapp进行实现 本文的代码只提供了前端代码部分&#xff0c;后端接口部分没有进行提供 <!-- 使用 open-type 来触发手机号授权 --> <button open-type"getPhoneNumber" getphonenumber"getPhoneNumber">绑定手机号 </butt…

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

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

信息系统项目管理师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&#xff0c;即Hive Hybrid Procedural SQL一个开源工具&#xff0c;它为hive实现了过程性的SQL功能&#xff0c;类似Oracle的PLSQL。从hive 2.0.0开…

云计算中的网络服务

网络服务是云计算平台不可或缺的一部分&#xff0c;为用户提供构建、管理、保护云环境中网络资源的能力。以下是对列举的七种网络服务——虚拟私有云&#xff08;VPC&#xff09;、负载均衡、内容分发网络&#xff08;CDN&#xff09;、云防火墙、专用网络连接&#xff08;专线…

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

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

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

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

k8s安装nginx Ingress超详细指南

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

养老金融:编织中国老龄社会的金色安全网

在科技金融、绿色金融、普惠金融、养老金融、数字金融这“五篇大文章”中&#xff0c;养老金融以其独特的社会价值和深远影响&#xff0c;占据着不可或缺的地位。十三届全国政协经济委员会委员、原中国保监会副主席周延礼先生近期在多个场合的发言&#xff0c;不仅凸显了养老金…

⑦ - 产品经理通识指南

📖 该文隶属 程序员:职场关键角色通识宝典✍️ 作者:哈哥撩编程(视频号同名) 博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者🏆 推荐专栏: 🏅 程序员:职场关键角色通识宝典🏅

【成长篇】Java程序员的自我突破

Java程序员的自我突破 在快速发展的IT行业中,Java程序员作为其中的一支重要力量,面临着不断变化的技术环境、激烈的竞争压力以及日益增长的工作要求。为了在这个行业中立足并取得成功,Java程序员需要不断地进行自我突破,提升自己的能力和价值。本文将从多个方面探讨Java程…

使用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: …

C++11 设计模式6. 建造者模式,也叫做生成器模式

一 什么是建造者模式&#xff1f; 建造者模式&#xff08;也被成为⽣成器模式&#xff09;&#xff0c;是⼀种创建型设计模式&#xff0c;软件开发过程中有的时候需要创建很复杂的对象&#xff0c;⽽建造者模式的主要思想是将对象的构建过程分为多个步骤&#xff0c;并为每个步…

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

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

2024-04-29 区块链-项目-记录

摘要: 2024-04-29 区块链-项目-记录 区块链项目记录: (1) C 比特币(BTC) github&#xff1a; https://github.com/bitcoin/bitcoin 莱特币(LTC) github&#xff1a; https://github.com/litecoin-project/litecore-litecoin 瑞波币(XRP) github&#xff1a; https://gi…

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

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