当前位置: 首页 > 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.lqws.cn/news/521029.html

相关文章:

  • Tomcat
  • 用Rust写平衡三进制乘法器
  • Hoare逻辑与分离逻辑:从程序验证到内存推理的演进
  • ES10(ES2019)新特性整理
  • 华为运维工程师面试题(英语试题,内部资料)
  • mysql 5.1 升级 mysql 5.7 升级 mariadb10
  • RabbitMq中使用自定义的线程池
  • 基于R语言的亚组分析与森林图绘制1
  • 微算法科技融合Grover算法与统一哈希函数的混合经典-量子算法技术,可在多领域高效提升文本处理效率
  • win11搭建Python开发环境指南
  • MAC、IP地址、TCP、UDP、SSL、OSI模型
  • 【MCP 实战4-1】开发 OpenSearch MCP server
  • 南北差异之——理解业务和理解产品
  • spring项目启动sheel脚本
  • 惯性导航——陀螺仪
  • 解决git pull,push 每次操作输入账号密码问题
  • 基于STM32的个人健康助手的设计
  • 鸿蒙应用开发中的数据存储:SQLite与Preferences全面解析
  • 基于 opencv+yolov8+easyocr的车牌追踪识别
  • Kotlin 协程:全面解析与深度探索
  • 工业“三体”联盟:ethernet ip主转profinet网关重塑设备新规则
  • python哈尔滨中心医院用户移动端
  • Docker安装教程-linux
  • LinkAOS网上开户系统解析与开发实践
  • 初学python的我开始Leetcode题10-3
  • 2025学年湖北省职业院校技能大赛 “信息安全管理与评估”赛项 样题卷(二)
  • 掌握CIS基准合规性:通过自动化简化网络安全
  • 【Lua 基础学习】
  • P2840 纸币问题 2(动态规划)
  • 7.Spring框架