返回顶部
首页 > 资讯 > 前端开发 > VUE >如何使用GitLabCI实现多模块项目CI/CD
  • 599
分享到

如何使用GitLabCI实现多模块项目CI/CD

2024-04-02 19:04:59 599人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关如何使用gitLabCI实现多模块项目CI/CD,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Monorepo在开发多服务应用程序方面的优势。

这篇文章将为大家详细讲解有关如何使用gitLabCI实现多模块项目CI/CD,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Monorepo在开发多服务应用程序方面的优势。以及如何使用GitLab CI/CD和Docker轻松构建,测试和部署此类应用程序。

基于现代WEB的应用程序通常都包含多种服务。例如,后端api前端客户端。在规模扩大成为问题的大型项目中,服务也可以拆分为多个微服务。如何在这样的项目中组织源代码?一种解决方案是monorepo,即项目中所有源代码在同一个存储库中管理。还有一种是每个微服务分别创建一个存储库管理。monorepo方法允许轻松访问整个代码库,这带来了许多优势,例如易于代码重用、简化了依赖性管理。但每服务语义版本控制和部署过程将会更加复杂。

如何使用GitLabCI实现多模块项目CI/CD

我将通过一个示例项目来解释monorepo的概念及其部署。该项目是一个仅由两项服务组成的Web应用程序:后端和前端。例如,后端可以是运行在服务器上并提供REST或GraphQL  API的node.js应用程序。前端可以是用javascript框架(例如Reactvue.js)编写的单页应用程序,该应用程序由一个简单的Web服务器提供给客户端。

所有源代码都在一个monorepo中进行管理。我们的简单项目的文件结构如下:

monorepo/     backend/         src/         Dockerfile     frontend/         src/         Dockerfile     .git/     .gitignore     .gitlab-ci.yaml     docker-compose.yaml

在本地开发过程中以及服务器上的生产版本中,我们使用Docker容器。因此,每个服务都有一个Dockerfile描述其Docker镜像。该文件docker-compose.yaml用于在本地开发环境中配置和启动容器。可以在服务器上使用类似的文件来运行应用程序,或者您也可以使用Docker编排工具,例如kubernetes

CI/CD管道

我们的目标是每次发布新版本(即“代码提交到GitLab”)时自动将应用程序构建,测试和部署到服务器。这包括构建和测试服务,将每个服务捆绑在Docker映像中,并将这些映像存储在(私有)GitLab  Docker ReGIStry中。最后,服务器会自动收到有关新版本的通知,并会触发从注册表中提取新映像。所有这些都可以通过GitLab CI /  CD来实现。这是一个非常强大的工具。基本上,GitLab CI /  CD管道包括几个阶段如build,test和deploy。该管道配置有一个名为.gitlab-ci.yaml的文件,该文件存储在我们存储库的根目录中。如果是monorepo,我们必须确保触发了GitLab  CI / CD管道的正确阶段。而且,我们通常只希望构建,测试和部署应用程序中已更改的那些服务,而不是将所有服务都合并在一起,因为这可能会非常耗时。

在.gitlab-ci.yaml文件中我们为每个服务和每个阶段定义job。为了确保仅在更改服务源代码后才执行该服务的作业,我们可以将only/changes子句与文件夹路径的正则表达式结合使用。例如,后端服务的构建作业可以定义如下:

backend_build:   stage: build   only:     changes:       - "backend*"     ...

script在job部分中只需四行代码即可构建后端服务的Docker镜像并将其推送到GitLab Docker Registry 。

backend_build:   ...   script:     - docker login -u $DOCKER_USER -p $ACCESS_TOKEN $CI_REGISTRY     - cd backend     - docker build -f Dockerfile --tag latest .     - docker push latest   ...

在第一行中,我们使用用户名和访问令牌登录到GitLab Docker  Registry,该用户名和访问令牌先前已在变量名称$DOCKER_USER和中定义$ACCESS_TOKEN(在GitLab项目的设置中)。然后,我们转到backend/文件夹,运行Docker  build命令,最后将镜像推送到注册表。

我们的服务测试可以在另一个job中执行,例如backend_test。所需的命令和脚本在很大程度上取决于我们项目的测试基础结构,但基本上,我们调用的脚本与在本地开发环境中使用的脚本相同。使用GitLab  CI /  CD也可以进行更复杂的测试,例如集成或端到端测试。构建并存储在注册表中后,可以轻松地将服务的Docker镜像放入CI/CD管道中,并在测试中用作服务容器。

一旦构建和测试,我们的Docker镜像就可以部署了。我们为应用程序的每个服务定义部署作业,在其中登录服务器并触发从GitLab  Docker镜像仓库中提取新映像。

关于“如何使用GitLabCI实现多模块项目CI/CD”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: 如何使用GitLabCI实现多模块项目CI/CD

本文链接: https://lsjlt.com/news/80301.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用GitLabCI实现多模块项目CI/CD
    这篇文章将为大家详细讲解有关如何使用GitLabCI实现多模块项目CI/CD,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Monorepo在开发多服务应用程序方面的优势。...
    99+
    2024-04-02
  • springboot如何实现多模块项目添加一新模块
    这篇文章主要介绍了springboot如何实现多模块项目添加一新模块,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。springboot多模块项目添加一新模块选择Maven M...
    99+
    2023-06-29
  • 如何使用 PHP CI/CD 实现快速迭代?
    答案:利用 php ci/cd 实现快速迭代,包括设置 ci/cd 管道、自动化测试和部署流程。设置 ci/cd 管道:选择 ci/cd 工具,配置代码存储库,定义构建管道。自动化测试:...
    99+
    2024-05-08
    php ci/cd git docker composer
  • springboot实现多模块项目添加一新模块
    目录springboot多模块项目添加一新模块springboot添加新模块的方法springboot项目基本结构如图一、选择file->projectstructure文件-...
    99+
    2024-04-02
  • 如何实现规模化的Kubernetes CI/CD 流水线
    本篇文章为大家展示了如何实现规模化的Kubernetes CI/CD 流水线,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、背景在近几年,Kubernetes迅速成为了容器编排的事实上的开源标准。...
    99+
    2023-06-04
  • 使用maven-assembly-plugin如何打包多模块项目
    目录maven-assembly-plugin打包多模块项目概述1. 需求2. 打包流程使用maven-assembly-plugin插件来定制化打包使用内置的Assembly De...
    99+
    2024-04-02
  • 如何在Python项目中使用collections模块
    这篇文章主要介绍了如何在Python项目中使用collections模块,编程网小编觉得不错,现在分享给大家,也给大家做个参考,一起跟随编程网小编来看看吧!Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;...
    99+
    2023-06-06
  • 如何在python项目中使用urllib.request模块
    今天就跟大家聊聊有关如何在python项目中使用urllib.request模块,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。urllib子模块urllib.request 打开或请...
    99+
    2023-06-14
  • SpringCloud如何搭建一个多模块项目
    在spring cloud系列章节中,本来已经写了几个章节了,但是自己看起来有些东西写得比较杂,所以重构了一下springcloud的章节内容,新写了本章节,先教大家在工作中如何搭建...
    99+
    2024-04-02
  • 如何在IDEA中创建java多模块项目
    小编给大家分享一下如何在IDEA中创建java多模块项目,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、使用spring initializr创建java工程&...
    99+
    2023-06-14
  • 详解使用Maven构建多模块项目(图文)
    Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块。项目结构如下:     test-hd-parent ...
    99+
    2023-05-31
    maven 多模块 多模
  • 如何使用GitLab分模块管理大型项目
    GitLab是一款非常强大的代码托管平台,支持团队协作,并且具备各种高级功能,例如持续集成、自动化测试、项目管理等等。但是,在开发大型项目的过程中,代码库往往会变得非常庞大且复杂,这时候就需要对项目进行细致的分解和管理。本文将介绍如何使用G...
    99+
    2023-10-22
  • dos中如何使用cd命令实现目录跳转
    这篇文章主要介绍了dos中如何使用cd命令实现目录跳转,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。例如,我们打开命令行窗口的时候,一般是这样操作的:在桌面左下角找到“开始”...
    99+
    2023-06-08
  • 如何使用AppCompat项目模版
    这篇文章主要为大家展示了“如何使用AppCompat项目模版”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用AppCompat项目模版”这篇文章吧。使用AppCompat项目模版从Andr...
    99+
    2023-06-04
  • static{}块如何在java项目中使用
    这篇文章给大家介绍static{}块如何在java项目中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。java中的static{}块的实例详解第一个小程序: package com.babyDuncan....
    99+
    2023-05-31
    java static{} ava
  • Python中如何使用re模块实现okenizer
    这篇文章主要介绍“Python中如何使用re模块实现okenizer”,在日常操作中,相信很多人在Python中如何使用re模块实现okenizer问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中...
    99+
    2023-06-30
  • vue多页面项目中路由如何使用history模式
    这篇文章给大家分享的是有关vue多页面项目中路由如何使用history模式的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。如何解决有一天看webpack文档的时候,突然看到了his...
    99+
    2024-04-02
  • 如何使用yarn代替npm管理前端项目模块依赖
    这篇文章将为大家详细讲解有关如何使用yarn代替npm管理前端项目模块依赖,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是 yarn简单来说,yarn 是一个与 np...
    99+
    2024-04-02
  • Vue CLI项目如何使用axios模块进行前后端交互
    这篇文章将为大家详细讲解有关Vue CLI项目如何使用axios模块进行前后端交互,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Vue-CLI项目-axios前后端交互一...
    99+
    2024-04-02
  • springBoot项目如何实现启动多个实例
    springBoot项目启动多个实例 今天碰到一个需求是,将一个服务提供者启动两个实例,一个实例对外,一个实例对内,对内价格有折扣,两个实例通过指定不停的profile来区分,要求是...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作