当前位置: 首页 > news >正文

完整教程:【GitLab/CI】前端 CI

整体流程概览(流水线高层)

  1. 开发者把代码 push / open MR → 触发 GitLab Pipeline。
  2. Pipeline 按 stages(例如 install → lint → test → build → deploy)顺序执行,每个 stage 内的 job 并行。
  3. Runner(你为项目/组配置的)拉取镜像或启动容器,执行 job 的 before_script / script;job 可以产出 artifacts(构建产物)并写入 cache(依赖缓存)。
  4. 若某一步失败,CI 报红并把日志返回给 MR;成功后可触发部署(到测试/预发布/生产),或生成 Review App。

典型前端流水线(各阶段目的)

必备与常见的 .gitlab-ci.yml 配置项(逐条解释)

下面用示例同时讲解每个调整的作用。

stages:
- prepare
- install
- lint
- test
- build
- deploy
variables:
FRONTEND_DIR: frontend
PNPM_STORE_DIR: .pnpm-store
NODE_ENV: production
image: node:20
cache:
key: ${CI_COMMIT_REF_SLUG}-pnpm-store
paths:
- .pnpm-store
- frontend/node_modules
before_script:
- cd ${FRONTEND_DIR}
install:
stage: install
script:
- npm -g pnpm@7
- pnpm config set store-dir ${PNPM_STORE_DIR}
- pnpm install --frozen-lockfile
cache:
policy: pull-push
lint:
stage: lint
script:
- pnpm lint
test:
stage: test
script:
- pnpm test --reporter=jest-junit
artifacts:
reports:
junit: junit.xml
when: always
build:
stage: build
script:
- pnpm build
artifacts:
paths:
- dist
expire_in: 1 week
deploy:
stage: deploy
script:
- ./deploy-script.sh
only:
- main

解释(按部署项):

  1. stages:流水线的阶段顺序。stage 的顺序决定执行顺序,stage 内 job 并行。

  2. variables:定义 pipeline 内的环境变量(可在 job 中引用)。放敏感信息不要放在这里,要放 GitLab 的 CI/CD Variables。

  3. image:Runner 在执行 job 时用的容器镜像(Docker/Kubernetes executor 会拉这个镜像)。选稳定的 Node 镜像,或自建含依赖的镜像。镜像下载的策略:

    • never: 当使用这个策略,会禁止Gitlab Runner从Docker hub或者其他地方下拉镜像,只能使用自己手动下拉的镜像
    • if-not-present: 当利用这个策略,Runner会先检测本地是否有镜像,有的话使用该镜像,假如没有再去下拉。这个策略如果再配合定期删除镜像,就能达到比较好的效果
    • always: 这个是gitlab-ci默认使用的策略,即每一次都是重新下拉镜像,导致的结果就是比较耗时间
  4. cache:用于存依赖等来加速后续 job。key 决定缓存隔离粒度(按分支、commit、共享等)。paths 列出要缓存的目录。policy 可设 pull-push(默认),或 pull

  5. before_script:在每个 job 执行实际 script 前会执行的命令(可复用),常用于 cd、设置环境、解码 secrets。after_script同理。

  6. script:job 的要执行的命令(必须有)。很多错误就在这里可以看到。

  7. artifacts:job 成功后保留的文件供下个 stage 使用或供下载(如 dist、测试报告、coverage)。expire_in 控制保存时间。

  8. only/exceptrules:控制何时触发 job。rules 更灵活,推荐使用 rules 替代 only/except

  9. artifacts.reports:特殊用途的 artifacts,比如 junit 测试报告或 coverage,可在 GitLab UI 显示测试结果。

  10. when:controls when artifact is uploaded (always, on_success, on_failure)。

  11. needs:允许跳过 stage 顺序,直接使用另一个 job 的 artifacts,能加速 pipeline(注意并发与资源)。

  12. services:只想其他 docker 镜像,这些镜像会合 image 制定的镜像绑定。

  13. retry, timeout, parallel:job 重试次数、最长时长、并行 matrix(并发运行多个相同 job)。

lockfile 与可重复构建

  • 强制使用 --frozen-lockfile(pnpm)或 npm ci(npm)可保证 CI 严格按锁文件安装。若本地修改了 package.json 却没更新锁文件,CI 会失败——这是好事,防止无意识升级。
  • 若想在 CI 自动更新 lockfile(不推荐),可在临时 job 使用 pnpm install --no-frozen-lockfile,并把新的 lockfile 提交/创建 MR。不过优先流程应是本地开发者更新并提交锁文件。

在 GitLab 上如何配置(UI 操作)

  1. 编写自己项目的 .gitlab-ci.yml 。包含想要执行的各种指令(代码检查、自动打包、自动部署等)。

  2. 项目 -> 构建 -> 流水线 -> 新流水线:

  3. 项目 → Settings → CI/CD → Variables:

  4. Pipeline 页面:可以查看最近的 pipeline,点击 pipeline id 查看各 job 日志、artifacts、测试报告。修改.gitlab-ci.yml文件,直接修改、增添远程仓库项目内容,合并请求等操作也会自动触发流水线。或者手动点击 run pipeline 触发流水线。

  5. Jobs 页面:查看某个 job 的详细日志;可在 job 上点 “Retry” 重新跑,或点击 Debug(如果 runner 支持交互调试)。pipeline 包含多个 stage 阶段,每个 stage 阶段包括多个 job 作业。

  6. Environments / Releases:用于管理部署环境(staging/prod),许可把 Deploy job 绑定到环境,并在 GitLab UI 看到部署历史。

  7. Protected Branches:设置哪些分支能触发 Protected CI(配合 Protected variables 使用)。

http://www.jsqmd.com/news/329768/

相关文章:

  • 某音视频批量下载工具,高清无水印!(免安装 便携版)
  • 【毕业设计】基于springboot的中文社区交流平台(源码+文档+远程调试,全bao定制等)
  • 2026年新疆营销推广公司推荐:本地化场景深度评测与权威排名解析
  • 企业决策指南:四大权威报告交叉验证辽宁营销推广公司TOP5终极排名与选型指南
  • 2026年新疆营销推广公司权威测评报告:基于百家客户匿名反馈的口碑深度解析
  • 【垂类模型数据工程】第四阶段:高性能 Embedding 实战:从双编码器架构到 InfoNCE 损失函数详解
  • 摩耶上门按摩 联系方式:用户预约前的通用指南
  • 2026年新疆营销推广公司权威评测:基于实战效果的五家头部企业深度解析
  • 2026年辽宁营销推广公司权威评测:基于实战效果的五家头部企业深度解析
  • 摩耶上门按摩 联系方式:了解服务流程与注意事项
  • 2026年青海营销推广公司推荐与排名:全域智能运营时代下的区域增长伙伴深度评测
  • 2026年新疆营销推广公司推荐:五大优选机构技术、运营与效果全维度解析
  • 2026年辽宁营销推广公司推荐:技术全栈与效果保障维度评价,涵盖多行业场景与增长确定性痛点
  • 2026年15万左右的城市SUV推荐:基于多场景实测评价,针对安全与可靠性痛点精准指南
  • 2026抖音涨粉秘籍:从0到10万+,程序员/技术博主专属实操指南
  • 2026开年!成都酱肉小笼包招商推荐榜里的财富密码,酱肉小笼包/非遗红油小笼包/小吃/美食小吃,酱肉小笼包招商哪家权威
  • 2026年西藏营销推广公司推荐与排名:全域智能运营时代的效果保障与成本控制实战解析
  • 2026年甘肃营销推广公司专项测评:选型指引
  • 如何为不同家庭选城市SUV?2026年15万左右城市SUV全面评测与推荐,直击成本与耐用性痛点
  • 2026年青海营销推广公司推荐:五大优选机构技术、运营与效果全维度深度解析
  • 义乌雷硕包装制品有限公司 联系方式:企业联系信息查询与使用建议
  • ‌测试用例执行顺序优化实践:先跑快的,再跑慢的
  • 棒垒球网站设计与开发 任务书
  • 义乌雷硕包装制品有限公司 联系方式: 官方联络方式及通用参考
  • 为了简化编程就不用很多的分享了
  • 义乌雷硕包装制品有限公司 联系方式: 了解其服务流程与市场定位
  • 开题报告基于springboot的ERP系统
  • 电池soc估计算法的GUI仿真平台 以及基于matlab设计写的,目前初始版本可以使用两种算法...
  • 2026年甘肃营销推广公司推荐:五大优选机构技术、运营与效果全维度深度评测
  • 2026年四川营销推广公司综合实力全景解析与推荐