当前位置: 首页 > 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

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

相关文章:

  • 游戏网站制作公司全网推广
  • 个人免费网站注册单页面seo搜索引擎优化
  • 做网站备案照片的要求策划网络营销方案
  • 做淘宝客网站需要什么要求吗站长工具海角
  • 男女直接做的视频上那个网站2021年最为成功的营销案例
  • 被他人备案后做违法网站北京百度seo
  • 康谋方案 | ARXML 规则下 ECU 总线通讯与 ADTF 测试方案
  • MicroPython网络编程:AP模式与STA模式详解
  • 专题:2025医疗AI应用研究报告|附200+份报告PDF汇总下载
  • SpringCloud系列(35)--使用HystrixDashboard进行服务监控
  • 《AI大模型应用技术开发工程师》学习总结
  • 从0开始学习R语言--Day31--概率图模型
  • jsoncpp-src-0.5.0编译
  • 多模态大模型(从0到1)
  • 抖音视频怎么去掉抖音号水印保存
  • 2023年全国青少年信息素养大赛Python 复赛真题——玩石头游戏
  • Vue 英雄列表搜索与排序功能实现
  • 各计算机语言在机器人领域的应用
  • 《汇编语言:基于X86处理器》第4章 数据传送、寻址和算术运算(2)
  • LangChain4j之会话功能AiServices工具类的使用(系列二)
  • python基础(字符串-复习)
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | MovieApp(电影卡片组件)
  • 2025湖北省职业院校技能大赛信息安全管理与评估样题
  • Springboot——整合netty并进行websocket通信
  • 2025.6.16-实习
  • 《仿盒马》app开发技术分享-- 兑换列表展示(68)