欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

分享我在前端和后端分离项目中使用 Gitlab-CI 的经验

最编程 2024-06-21 11:41:24
...

Before


Gitlab-ci是Gitlab提供的CI/CD特性,结合Gitlab简单友好的配置界面,能愉悦的在Gitlab界面查看管道执行流程,并自然流畅的推动敏捷开发。


Gitlab-CI/CD的核心是搭建Gitlab Runner、编写.gitlab-ci.yaml文件。


详细示例请参考:Gitlab CI/CD+ASP.NET Core.


本次前后端两个项目使用同一个Gitlab Runner(shell模式),前端项目的gitlab-ci.yaml构建Job如图:


网络异常,图片无法展示
|


Round 1


单个Gitlab Runner可为多个项目提供构建服务


gitlab-Runner register命令只能接受一个注册token,当时为支持多个项目,花了不少冤枉心思倒腾Gitlab Runner.


你可以为注册的项目解锁Runner,这样Gitlab Runner就可以为其他项目提供构建:


网络异常,图片无法展示
|


Round 2


使用Runner缓存加快前端构建过程


大家都知道npm_module被前端开发者诟病为毒瘤, 而Gitlab runner执行每次构建job之前都会*,pull/fetch指定的代码再执行job, 这就导致每次build job会耗时很久(要拉取毒瘤)。


#!/bin/bash
cd   packages/event-analysis
yarn config set registry http://registry.npm.xxoo.com &&  yarn --prefer-offline --frozen-lockfile
npm run build


以上是build任务的脚本frontend.sh,总耗时3m33s,其中yarn命令拉取

npm_modules耗时172.52s


网络异常,图片无法展示
|


gitlab runner支持缓存


在.gitlab-ci.yaml 文件中定义cache指令:cache被用来在job之间缓存文件,更强大的是可以定义文件依赖缓存:


build:
  stage: build
  cache:
    key:
      files:
        - packages/event-analysis/package.json
    paths:
      - node_modules
  script:
    - ./frontend.sh
  tags:
    - my-tag


缓存key是yarn命令要用到的package.json,缓存内容是npm_modules;


只要这个package.json文件未变更,后续任务就会使用缓存的npm_modules,而不用重建npm_modules依赖。


使用runner缓存优化后build任务总耗时1m18s,其中yarn命令耗时22.83s, 相比之前耗时大大减少 ,妙哉。


网络异常,图片无法展示
|


推荐阅读