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

在 GitLab CI 中配置多任务

GitLab CI 通过 .gitlab-ci.yml 文件定义流水线,多任务可以通过 stagesjobs 实现。每个任务(Job)可以独立运行或依赖其他任务。

定义多个阶段(Stages)

阶段是任务的逻辑分组,任务按阶段顺序执行。默认包含 buildtestdeploy 三个阶段,但可以自定义。

stages:- build- test- deploy

配置多个任务(Jobs)

每个任务属于一个阶段,通过 stage 字段指定。以下示例定义了三个任务:

build_job:stage: buildscript:- echo "Running build tasks"- make buildtest_job:stage: testscript:- echo "Running tests"- make testdeploy_job:stage: deployscript:- echo "Deploying application"- make deploy

并行执行任务

同一阶段的任务会并行执行。例如,以下两个测试任务会在 test 阶段并行运行:

test_unit:stage: testscript:- echo "Running unit tests"- npm testtest_integration:stage: testscript:- echo "Running integration tests"- npm run test:integration

任务依赖与条件执行

通过 needs 字段定义任务依赖关系,跳过阶段限制:

deploy_job:stage: deployneeds: ["test_job"]script:- echo "Deploying only if test_job passes"

通过 rulesonly/except 控制任务触发条件:

deploy_prod:stage: deployscript:- echo "Deploy to production"rules:- if: $CI_COMMIT_BRANCH == "main"

使用模板减少重复代码

通过 extends 或锚点(YAML 特性)复用配置:

.tests:script:- echo "Running common test steps"test_unit:extends: .testsscript:- echo "Running unit tests"test_integration:extends: .testsscript:- echo "Running integration tests"

多项目流水线(父子流水线)

通过 trigger 启动多项目协作:

stages:- deploydeploy_job:stage: deploytrigger:project: my-group/deploy-toolsstrategy: depend

使用变量和缓存优化任务

共享变量和缓存提升效率:

variables:PROJECT_NAME: "my-app"cache:key: ${CI_COMMIT_REF_SLUG}paths:- node_modules/build_job:stage: buildscript:- echo "Building ${PROJECT_NAME}"- npm install

通过以上方法可以灵活配置多任务流水线,适应复杂的工作流需求。

http://www.lryc.cn/news/575073.html

相关文章:

  • 《从0到1:C/C++音视频开发自学指南》
  • SQL学习笔记2
  • 论文阅读:arxiv 2025 ThinkSwitcher: When to Think Hard, When to Think Fast
  • 通过 HTML 子图和多尺度卷积 BERT 的双向融合实现可解释的恶意 URL 检测
  • npm 报错:“无法加载文件 ...npm.ps1,因为在此系统上禁止运行脚本” 解决方案(附执行策略说明)
  • SpringBoot使用admin+actuator实现日志可视化
  • 曼昆《经济学原理》第九版 宏观经济学 第三十二章宏观经济政策的六个争论
  • Spring 容器核心扩展实战:Spring Boot中三大扩展问题解析
  • 亚远景-ASPICE与ISO 26262:汽车安全与软件质量的协同
  • JVM 中的 GC 算法演进之路!(Serial、CMS、G1 到 ZGC)
  • 7.Spring框架
  • 【机器人编程基础】Python模块的定义和导入
  • 融合聚类与分类的退役锂电智能分选技术:助力新能源汽车产业可持续发展
  • Spring学习笔记【8】
  • 【嘉立创EDA】PCB 如何按板框轮廓进行铺铜
  • JVM调优实战 Day 6:JVM性能监控工具实战
  • Redis大规模Key遍历实战:性能与安全的最佳实践
  • 前端中的 CI/CD 教程详解(附实践方案)
  • 初学python的我开始Leetcode题10-3
  • Node.js-fs模块
  • 【Linux】Shell 脚本编程——条件测试与比较
  • python的易家宜超市云购物系统
  • 无人机灯光驱动模块技术解析
  • 京东正式开源 Taro on HarmonyOS C-API 版本,为鸿蒙应用跨端开发提供高性能框架
  • Xcode缓存清除
  • 【CUDA调优指南】缓存访存流程
  • Jenkins CLI 使用方法介绍
  • Jenkins JNLP与SSH节点连接方式对比及连接断开问题解决方案
  • 力扣2040两个有序数组的第K小乘积
  • Docker、Docker composer与Docker desktop