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

简介: 今天继续聊一聊为前后端分离搭建Gitlab-CI的额外经验。

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如图:


4efeb0ce87bb257412155004200c47cd.png


Round 1


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


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


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


86b72f9c5256168d382d3be4f4dce58a.png


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


de8d8ec49609c194fe4a2c94c96032c2.png


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, 相比之前耗时大大减少 ,妙哉。


c8ffad0f036c84de1cc5ecbc82bfa6b0.png


相关文章
|
5月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
354 0
|
5月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
145 0
|
6月前
|
Docker 容器
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
|
9月前
|
JavaScript Java 应用服务中间件
用白薅来的gitlab自带的gitlab-runner部署一个vue项目
用白薅来的gitlab自带的gitlab-runner部署一个vue项目
227 2
|
9月前
|
缓存 Kubernetes Linux
CentOS 7上的GitLab Runner,让你的项目加速奔跑
CentOS 7上的GitLab Runner,让你的项目加速奔跑
479 1
|
10月前
|
开发工具 git
修改GitLab项目文件路径重新刷新配置报错问题原因及解决方案
修改GitLab项目文件路径重新刷新配置报错问题原因及解决方案
458 0
|
10月前
|
jenkins 持续交付 开发工具
【gitlab】旧的gitlab项目迁移新的gitlab
【gitlab】旧的gitlab项目迁移新的gitlab
1530 0
|
10月前
|
运维 数据中心 数据安全/隐私保护
【Terraform实现云服务基础设施既代码(IaC)案例实战-3】:Terraform+Docker+Portainer+Gitlab+GitlabRunner搭建Tree项目
前言树苗科技公司业务上云2年有余,随着技术的不断发展。运维团队支持业务变更配置、开资源、删资源等过程加班到深夜一两点已是家常便饭。为了进一步提升工作效率,运维总监张三决定对当前业务交付路径进行统一梳理,借助IaC的理念和Terraform自动化工具逐步实施运维生产自动化,改善组内成员频繁加班且重复劳...
403 0
【Terraform实现云服务基础设施既代码(IaC)案例实战-3】:Terraform+Docker+Portainer+Gitlab+GitlabRunner搭建Tree项目
|
10月前
|
Shell 网络安全 开发工具
GitLab创建项目的时候需要SSH Keys
GitLab创建项目的时候需要SSH Keys
56 0
|
10月前
IDEA第一次上传项目到gitlab
IDEA第一次上传项目到gitlab步骤