pipeline-variable-management

0
0
Source

流水线变量管理完整指南,涵盖变量生命周期(创建、初始化、更新、存储、传递、查询)和变量字段扩展(字段定义、类型扩展、作用域、继承)。当用户开发变量功能、处理变量传递、扩展变量字段或调试变量问题时使用。

Install

mkdir -p .claude/skills/pipeline-variable-management && curl -L -o skill.zip "https://mcp.directory/api/skills/download/5277" && unzip -o skill.zip -d .claude/skills/pipeline-variable-management && rm skill.zip

Installs to .claude/skills/pipeline-variable-management

About this skill

流水线变量管理完整指南

Skill 概述

Skill 名称: Pipeline Variable Management
适用场景: 流水线变量的全生命周期管理与字段扩展
重要性: ⭐⭐⭐⭐ (高优先级)
文档版本: 2.0
最后更新: 2025-01

流水线变量是 BK-CI 流水线中的核心功能,支持在流水线编排、构建执行过程中动态传递和管理数据。本 Skill 提供变量管理的两大核心主题:

  1. 变量生命周期 - 变量从创建到销毁的完整流程
  2. 变量字段扩展 - 如何扩展变量的数据结构

一、变量管理架构概览

1.1 变量的定义与作用

流水线变量是流水线中用于存储和传递数据的核心机制,支持:

  • 配置参数化 - 将流水线配置中的固定值替换为变量
  • 数据传递 - 在不同 Stage/Job/Task 之间传递数据
  • 动态计算 - 运行时动态生成和更新变量值
  • 用户输入 - 手动触发时由用户输入参数值
  • 系统内置 - 提供系统级别的预定义变量

1.2 变量的两种核心模型

BK-CI 中流水线变量存在两种数据模型的双向转换:

1. BuildFormProperty(后端内部模型)

  • 位置: common-pipeline/src/main/kotlin/.../BuildFormProperty.kt
  • 用途: 微服务内部使用,数据库存储格式
  • 特点: 完整的字段定义,包含 Swagger 注解
  • 应用: Process 模块内部处理、数据持久化

2. Variable(YAML 模型)

  • 位置: common-pipeline-yaml/src/main/kotlin/.../yaml/v3/models/Variable.kt
  • 用途: YAML 流水线定义,对外 API 交互
  • 特点: Jackson 注解,支持 JSON 序列化
  • 应用: PAC 流水线、OpenAPI 接口

3. 转换器(VariableTransfer)

  • 位置: common-pipeline-yaml/src/main/kotlin/.../yaml/transfer/VariableTransfer.kt
  • 职责: 实现 BuildFormPropertyVariable 的双向转换
  • 核心方法:
    • transfer(BuildFormProperty): Variable - 内部模型 → YAML 模型
    • transfer(Variable): BuildFormProperty - YAML 模型 → 内部模型

1.3 变量的存储与传递

┌─────────────────────────────────────────────────────────────────┐
│                       变量存储与传递架构                          │
└─────────────────────────────────────────────────────────────────┘

  ┌──────────────────┐
  │  流水线配置存储   │  BuildFormProperty
  │  (T_PIPELINE_*) │  存储在 Model JSON 中
  └────────┬─────────┘
           │
           ▼
  ┌──────────────────┐
  │   构建启动       │  读取变量定义
  │  (StartBuild)   │  初始化变量值
  └────────┬─────────┘
           │
           ▼
  ┌──────────────────┐
  │  运行时变量存储   │  T_PIPELINE_BUILD_VAR
  │  (BuildVar)     │  构建级别的变量实例
  └────────┬─────────┘
           │
           ├─────────────────┬─────────────────┐
           ▼                 ▼                 ▼
  ┌────────────────┐ ┌────────────────┐ ┌────────────────┐
  │   Stage 1      │ │   Stage 2      │ │   Stage 3      │
  │  继承 + 新增   │ │  继承 + 更新   │ │  继承 + 输出   │
  └────────────────┘ └────────────────┘ └────────────────┘

二、两大核心主题

2.1 变量生命周期管理

覆盖内容:

  • 🔄 变量创建与初始化
  • 📦 变量存储机制
  • 🔀 变量传递与继承
  • 🔄 变量动态更新
  • 🔍 变量查询与调试

典型场景:

  • 理解变量在构建执行过程中的完整流转
  • 开发新的变量初始化逻辑
  • 调试变量传递问题
  • 实现变量的动态更新功能

查阅文档: reference/1-lifecycle.md (1414 行)

2.2 变量字段扩展

覆盖内容:

  • 🆕 新增变量字段
  • 🔧 字段类型定义
  • 🔄 模型转换处理
  • 🎯 前后端字段同步

典型场景:

  • 为变量添加新的属性字段
  • 扩展变量类型
  • 处理历史数据兼容性
  • 同步前后端字段定义

查阅文档: reference/2-extension.md (534 行)


三、使用指南

3.1 场景 1:理解变量生命周期

问题示例:

  • "变量值是如何从流水线配置传递到构建执行的?"
  • "插件如何获取和更新变量值?"
  • "变量的作用域是如何控制的?"

操作: 查阅 reference/1-lifecycle.md

内容包含:

  1. 变量生命周期全景图
  2. 六个关键阶段详解
  3. 变量存储表结构
  4. 变量传递机制
  5. 调试方法与常见问题

3.2 场景 2:扩展变量字段

问题示例:

  • "如何为变量添加一个新的 allowModify 字段?"
  • "如何扩展变量的可选值列表?"
  • "如何确保新字段在 YAML 和内部模型之间正确转换?"

操作: 查阅 reference/2-extension.md

内容包含:

  1. 变量字段扩展完整路径
  2. BuildFormProperty 字段定义
  3. Variable (YAML) 字段定义
  4. VariableTransfer 转换器实现
  5. 前端字段同步
  6. 测试与验证

四、核心类与文件速查

4.1 变量定义类

类名位置用途
BuildFormPropertycommon-pipeline/.../BuildFormProperty.kt后端内部变量模型
Variablecommon-pipeline-yaml/.../Variable.ktYAML 变量模型
VariableTransfercommon-pipeline-yaml/.../VariableTransfer.kt模型转换器

4.2 变量处理服务

类名位置职责
PipelineVariableServiceprocess/biz-base/.../PipelineVariableService.kt变量业务逻辑
BuildVariableServiceprocess/biz-base/.../BuildVariableService.kt构建变量管理
VariableAcrossInfoUtilprocess/biz-base/.../VariableAcrossInfoUtil.kt跨 Job 变量传递

4.3 数据库表

表名用途
T_PIPELINE_BUILD_VAR构建级别的变量实例(运行时)
T_PIPELINE_SETTING流水线配置(包含变量定义)
T_PIPELINE_MODEL_TASK插件配置(引用变量)

五、开发流程

5.1 变量功能开发流程

1. 明确需求
   ↓
2. 确定涉及的生命周期阶段
   │  → 查阅 reference/1-lifecycle.md
   ↓
3. 是否需要扩展字段?
   ├─ 是 → 查阅 reference/2-extension.md
   │       执行字段扩展流程
   ↓
4. 实现后端逻辑
   │  → 修改 Service/DAO 层
   ↓
5. 前端同步(如需)
   │  → 更新 Vue 组件
   ↓
6. 测试验证
   │  → 单元测试 + 集成测试
   ↓
7. 文档更新

5.2 常见开发任务

任务参考文档关键类
新增变量类型2-extension.mdBuildFormProperty, Variable
变量初始化逻辑1-lifecycle.mdBuildVariableService
跨 Job 传递1-lifecycle.mdVariableAcrossInfoUtil
变量权限控制1-lifecycle.mdPipelineVariableService
变量表达式解析-utility-components Skill (reference/2-expression-parser.md)

六、与其他 Skill 的关系

6.1 依赖的 Skill

  • pipeline-model-architecture - 理解变量在 Model 中的位置
  • process-module-architecture - 理解变量处理的代码架构
  • utility-components (reference/2-expression-parser.md) - 变量引用的表达式解析

6.2 被引用的场景

  • PAC 流水线 → 变量在 YAML 中的定义
  • 流水线编排 → 变量的创建和配置
  • 构建执行 → 变量的初始化和传递
  • 插件开发 → 插件如何读取和更新变量

七、详细文档导航

文档内容行数文件大小
1-lifecycle.md变量生命周期完整流程141478.7KB
2-extension.md变量字段扩展指南53420.2KB

使用建议:

  • 初学者:先阅读本文档了解整体架构,再深入 1-lifecycle.md
  • 开发者:根据具体开发任务直接查阅对应的 reference 文档
  • 调试:优先查阅 1-lifecycle.md 中的调试章节

八、常见问题 FAQ

Q1: 变量和参数有什么区别?

A: 在 BK-CI 中,"变量"和"参数"本质上是同一个概念,都是 BuildFormProperty。区别在于使用场景:

  • 参数:流水线启动时用户输入的变量
  • 变量:流水线内部定义和使用的变量

Q2: 如何实现跨 Stage 传递变量?

A: 查阅 reference/1-lifecycle.md 中的"阶段四:跨容器传递"章节,了解 VariableAcrossInfoUtil 的使用。

Q3: 新增字段后前端不显示怎么办?

A: 按照 reference/2-extension.md 的"步骤 4:前端字段同步"章节,确保前端 Vue 组件已同步更新。

Q4: 变量值为空或不正确?

A: 查阅 reference/1-lifecycle.md 中的"调试方法"章节,使用日志和数据库排查。


九、版本历史

版本日期更新内容
2.02025-01整合 pipeline-variable-lifecyclepipeline-variable-extension,采用 reference 结构
1.x2024-12独立的两个 Skill

store-module-architecture

TencentBlueKing

Store 研发商店模块架构指南,涵盖插件/模板/镜像管理、版本发布、审核流程、商店市场、扩展点机制。当用户开发研发商店功能、发布插件、管理模板或实现扩展点时使用。

00

00-bkci-global-architecture

TencentBlueKing

BK-CI 全局架构指南,以流水线为核心的模块协作全景图,涵盖完整执行流程、模块依赖关系、数据流向、核心概念。当用户需要理解系统架构、进行跨模块开发、了解模块间协作或规划架构设计时优先阅读。

10

auth-module-architecture

TencentBlueKing

Auth 权限认证模块架构指南,涵盖 IAM 集成、RBAC 权限模型、资源权限校验、权限迁移、OAuth 认证。当用户开发权限功能、配置 IAM 资源、实现权限校验或处理认证流程时使用。

10

go-agent-development

TencentBlueKing

Go Agent 开发指南,涵盖 Agent 架构设计、心跳机制、任务执行、日志上报、升级流程、与 Dispatch 模块交互。当用户开发构建机 Agent、实现任务执行逻辑、处理 Agent 通信或进行 Go 语言开发时使用。

00

supporting-modules-architecture

TencentBlueKing

BK-CI 支撑模块架构指南,涵盖凭证管理(Ticket)、构建机环境(Environment)、通知服务(Notify)、构建日志(Log)、质量红线(Quality)、开放接口(OpenAPI)等支撑性服务模块。当用户开发这些模块功能或需要理解支撑服务架构时使用。

100

git-commit-specification

TencentBlueKing

Git 提交规范,涵盖 commit message 格式(feat/fix/refactor)、Issue 关联、分支命名、PR 提交准备、rebase 使用。当用户提交代码、编写 commit message、创建分支或准备 PR 时使用。

00

You might also like

flutter-development

aj-geddes

Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.

643969

drawio-diagrams-enhanced

jgtolentino

Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.

591705

ui-ux-pro-max

nextlevelbuilder

"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."

318398

godot

bfollington

This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.

339397

nano-banana-pro

garg-aayush

Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.

451339

fastapi-templates

wshobson

Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.

304231

Stay ahead of the MCP ecosystem

Get weekly updates on new skills and servers.