微服务项目部署实践:使用Gitlab Runner实现微服务项目的持续集成,持续交付和持续部署

简介: 本文通过详细的步骤一步一步说明在微服务架构的项目中如何进行项目部署的操作实践,通过Gitlab实现项目的持续集成,持续部署和持续交付。详解介绍的Gitlab中实现项目持续部署的工具GitLab Runner的具体使用步骤。通过这篇文章,可以熟悉微服务项目持续集成,持续交付和持续部署,学会使用GitLab Runner的具体使用方式,极大简化微服务项目的部署。

概念

  • 服务治理遇到的问题

    • 在微服务项目中每个服务都是独立运行的项目
    • 不可能对每个项目进行手动部署,涉及到自动化运维的问题

持续集成

  • 持续集成(Continues Integration,简称CI)
  • 持续集成指的是,频繁(一天多次)地将代码集成到主干,优点有两个:

    • 快速发现错误: 每完成一点更新, 就集成到主干,可以快速发现错误,定位错误
    • 防止分支大幅偏离主题: 如果不是经常集成,主干又在不断更新,会导致以后集成难度变大,甚至难以集成
  • 持续集成强调:开发人员提交了新的代码之后,立即进行构建,(单元)测试,根据测试结果,确定新代码和原有代码能否集成到一起
  • 与集成相关的概念还有持续交付和持续部署

使用GitLab持续集成

  • GitLab8.0以后,GitLab CI就已经集成在GitL中,只要在项目中添加一个 .gitlab-ci.yml文件,然后添加一个Runner,就可以进行持续集成
  • Pipeline

    • Pipeline: 管道 ,一次Pipeline相当于一次构建任务,可以包含多个流程:安装依赖,运行测试,编译,部署测试服务器,部署生产服务器等流程
    • 任何提交或者Merge Request的合并都可以触发Pipeline
  • Stages

    • Stages表示构建阶段,也就是上面的流程,可以在一次Pipeline中构建多个Stages,这些Stages的特点:

      • 所有Stages会按照顺序运行: 即当一个Stage完成后,下一个Stage才会开始
      • 只有当所有Stages完成后,该构建任务(Pipeline)才会成功
      • 如果任何一个Stage失败,那么后续的Stages都不会执行,该构建任务(Pipeline)失败
  • Jobs

    • Jobs表示构建工作,表示某个Stage里面执行的工作,可以在Stages里定义多个Jobs,这些Jobs特点:

      • 相同Stage中的Jobs会并行执行
      • 相同Stage中的Jobs都执行成功时,该Stage才会执行成功
      • 如果任何一个Job失败,那么该Stage失败,即构建任务(Pipeline)失败

持续交付

  • 持续交付(Continuous Delivery):

    • 频繁地将软件的新版本,交付给质量团队或用户以供评审
    • 评审通过,代码就进入生产阶段
  • 持续交付是持续集成的下一步,强调的是:不管怎么更新,软件是随时随地可以交付的
  • 持续交付是在持续集成的基础上,将集成后的代码部署到更接近真实运行环境的类生产环境(production-like environment)中

持续部署

  • 持续部署(Continuous Deployment)是持续交付的下一步,指的是代码通过评审后,自动部署到生产环境
  • 持续部署的目标: 代码在任何时刻都是可部署的,可进入生产阶段
  • 持续部署的前提: 自动化完成测试,构建,部署等步骤

GitLab Runner

GitLab CI

  • 一般来说,构建任务会占用很多的系统资源(编译代码时),由于GitLab CI是GitLab的一部分,由GitLab CI来运行构建任务的化,GitLab的性能会大大下降
  • GitLab CI最大的作用: 是管理各个项目的构建状态

GitLab Runner

  • GitLab Runner可以安装到不同的机器上,在构建任务运行期间不会影响GitL的性能
  • 基于Docker安装GitLab Runner:
1.创建工作目录: /usr/local/docker/runner
2.创建构建目录: /usr/local/docker/runner/environment
3.下载jdk-8u152-linux-x64.tar.gz复制到/usr/local/docker/runner/environment
4.下载apache-maven-3.5.3-bin.tar.gz复制到/usr/local/docker/runner/environment


daemon.json
1.在/usr/local/docker/runner/environment目录下创建daemon.json,用于配置加速器和仓库地址
{
    "registry-mirrors":[
        "https://registry.docker-cn.com"
    ],
    "insecure-registries":[
        "127.0.0.1:5000"
    ]
}
相关文章
|
3月前
|
人工智能 自然语言处理 安全
代码静态扫描工具集成与实践
代码静态扫描工具(Static Application Security Testing, SAST)是在不运行代码的情况下,通过分析源代码或二进制代码来发现潜在安全漏洞、代码缺陷和质量问题的工具
480 4
|
3月前
|
安全 Java 数据库
SpringSecurity认证授权及项目集成
本文介绍了基于Spring Security的权限管理框架,涵盖认证、授权与鉴权核心概念,通过快速入门示例演示集成流程,并结合数据库实现用户认证。进一步扩展实现正常登录,JWT登录及鉴权管理器,实现灵活的安全控制,适用于前后端分离项目中的权限设计与实践。
359 4
|
3月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
191 6
|
3月前
|
资源调度 JavaScript 前端开发
在Vue 3项目中集成Element Plus组件库的步骤
总结起来,在集成过程当中我们关注于库本身提供功能与特性、环境搭建与依赖管理、模块化编程思想以及前端工程化等方面知识点;同时也涵盖前端性能优化(比如上文提及“按需加载”)与定制化开发(例如“自定义主题”)等高级话题.
344 16
|
3月前
|
安全 JavaScript 前端开发
安全漏洞检测集成及实践:SAST/DAST工具集成指南
通过合理集成和配置SAST/DAST工具,可以显著提升应用程序的安全性,并在开发早期发现和修复漏洞,降低安全风险和维护成本
351 4
|
3月前
|
机器学习/深度学习 边缘计算 数据可视化
MyEMS 深度解析:碳管理赋能与系统集成的实践路径
MyEMS 是一款集碳管理与能源优化于一体的开源系统,具备多标准碳核算、碳足迹可视化、碳成本分析等功能,助力企业实现精准碳减排。系统支持与工业、建筑、政务平台等多系统集成,打破数据孤岛,提升能效。依托活跃的开源社区与丰富实践案例,MyEMS 持续迭代,推动绿色转型。
187 1
|
4月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
891 1
|
4月前
|
供应链 监控 搜索推荐
35页PPT|零售行业自助数据分析方法论:指标体系构建平台集成、会员与商品精细化运营实践
在零售行业环境剧变的背景下,传统“人找货”模式正被“货找人”取代。消费者需求日益个性化,购买路径多元化,企业亟需构建统一的指标体系,借助BI平台实现数据驱动的精细化运营。本文从指标体系构建、平台集成到会员与商品运营实践,系统梳理零售经营分析的方法论,助力企业实现敏捷决策与业务闭环。
35页PPT|零售行业自助数据分析方法论:指标体系构建平台集成、会员与商品精细化运营实践
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
690 6
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
331 1

热门文章

最新文章