OVH/CDS 项目中的变量系统详解

OVH/CDS 项目中的变量系统详解

cds OVH CDS是一个开源的持续部署工具,支持多种应用程序类型和部署场景。它提供了一种简单的方式来定义和应用部署策略,以确保应用程序的可靠性和性能。特点:灵活、可扩展、易于使用。 cds 项目地址: https://gitcode.com/gh_mirrors/cd/cds

变量系统概述

在 OVH/CDS 项目中,变量系统是整个持续交付平台的核心功能之一,它允许开发者在不同层级定义和使用变量,从而实现配置的灵活管理和复用。变量系统支持多种数据类型,并提供了丰富的内置变量和辅助函数,极大简化了持续交付流程的配置工作。

变量的作用域层级

CDS 的变量系统采用层级化管理,支持在以下三个层级定义变量:

  1. 项目级变量:适用于整个项目的全局变量
  2. 环境级变量:针对特定环境的配置变量
  3. 应用级变量:与具体应用相关的变量

这种层级设计既保证了配置的灵活性,又提供了足够的隔离性,使得不同环境和应用可以拥有各自的配置而不互相干扰。

变量类型详解

CDS 支持以下六种变量类型,满足不同场景的需求:

  1. 字符串(String):普通文本内容
  2. 文本(Text):多行文本内容
  3. 布尔值(Boolean):true/false 值
  4. 数值(Number):数字类型
  5. 密码(Password):敏感信息,会进行加密处理
  6. 密钥(Key):用于认证的密钥信息

变量引用语法

CDS 采用统一的 {{.VAR}} 格式引用变量,并通过前缀区分不同来源的变量:

  • 动作变量:{{.VAR}}
  • 内置变量:{{.cds.VAR}}
  • Git相关变量:{{.git.VAR}}
  • 流水线变量:{{.cds.pip.VAR}}
  • 应用变量:{{.cds.app.VAR}}
  • 环境变量:{{.cds.env.VAR}}
  • 项目变量:{{.cds.proj.VAR}}
  • 构建时导出变量:{{.cds.build.VAR}}

内置变量列表

CDS 为每个构建过程自动生成以下内置变量:

| 变量名 | 描述 | |--------|------| | {{.cds.environment}} | 当前环境名称 | | {{.cds.application}} | 当前应用名称 | | {{.cds.job}} | 当前作业名称 | | {{.cds.manual}} | 是否为手动触发(true/false) | | {{.cds.pipeline}} | 当前流水线名称 | | {{.cds.project}} | 当前项目键名 | | {{.cds.run}} | 当前工作流运行编号(如3.0) | | {{.cds.run.number}} | 主运行编号(如3) | | {{.cds.run.subnumber}} | 子运行编号(如4) | | {{.cds.stage}} | 当前阶段名称 | | {{.cds.status}} | 前次流水线状态(Success/Failed) | | {{.cds.triggered_by.*}} | 触发者信息(邮箱、全名、用户名) | | {{.cds.version}} | 当前版本号(等同于run.number) | | {{.cds.workflow}} | 当前工作流名称 | | {{.cds.workspace}} | 当前作业的工作目录 | | {{.payload}} | 当前负载的JSON格式 |

特殊变量详解

cds.version 变量

{{.cds.version}} 是一个特殊的内置变量,它会在工作流运行过程中通过各个流水线传递,确保整个流程中的版本一致性。

变量导出机制

在脚本步骤中,可以使用以下命令导出变量:

$ worker export varname thevalue

导出的变量可以在以下场景使用:

  • 当前作业中:{{.cds.build.varname}}
  • 同一流水线的后续阶段:{{.cds.build.varname}}
  • 后续流水线中:{{.workflow.pipelineName.build.varname}}

Shell 环境变量

除密码类型外,所有 CDS 变量都可以作为普通环境变量使用,两种引用方式等价:

echo '{{.cds.parent.application}}'
echo $CDS_PARENT_APPLICATION

Git 相关变量

对于与 Git 集成的场景,CDS 提供了丰富的 Git 变量:

| 变量名 | 描述 | |--------|------| | {{.git.hash}} | 推送后最新提交的SHA | | {{.git.hash.short}} | SHA的简短版本 | | {{.git.branch}} | 触发运行的分支名 | | {{.git.tag}} | 触发运行的标签名 | | {{.git.author}} | 最新提交作者 | | {{.git.message}} | 最新提交信息 | | {{.git.repository}} | 仓库名称 |

对于 Bitbucket Server 还提供 Pull Request 相关变量,如目标分支信息、PR ID、评审信息等。

流水线参数

流水线可以定义参数,这些参数可以在工作流中设置值:

version: v1.0
name: build

parameters:
  param_name:
    type: string
    default: default_value

在工作流中设置参数值:

workflow:
  the-pipeline:
    pipeline: build
    parameters:
      varname: the-value

注意:流水线参数不支持密码类型,如需使用密码变量,应在项目/应用/环境级别定义。

辅助函数(Helpers)

CDS 提供了一系列辅助函数来修改变量值:

常用辅助函数示例

  1. 大小写转换:

    {{.cds.application | upper}}  # 转为大写
    {{.cds.application | lower}}  # 转为小写
    
  2. 默认值处理:

    {{.cds.app.foo | default "defaultValue"}}
    
  3. 字符串替换:

    {{.cds.application | replace "_" "."}}
    

辅助函数链式调用

可以组合多个辅助函数:

{{.cds.app.foo | upper | lower}}
{{.cds.app.foo | default .cds.app.bar | default .cds.app.biz | upper }}

完整辅助函数列表

CDS 支持丰富的辅助函数,包括但不限于:

  • 字符串处理:trim, substr, repeat, replace
  • 格式转换:toJSON, toPrettyJSON
  • 编码解码:b64enc, b64dec
  • 随机生成:randAlphaNum, randNumeric
  • 格式转换:snakecase, camelcase
  • 其他实用函数:quote, indent, escape等

最佳实践

  1. 敏感信息处理:始终将密码等敏感信息存储为密码类型变量
  2. 变量命名规范:采用一致的命名约定,如使用下划线分隔
  3. 默认值使用:为关键变量设置合理的默认值
  4. 辅助函数组合:合理组合辅助函数简化复杂处理
  5. 变量作用域:根据使用范围选择适当的变量层级

通过合理利用 CDS 的变量系统,可以大幅提升持续交付流程的灵活性和可维护性。

cds OVH CDS是一个开源的持续部署工具,支持多种应用程序类型和部署场景。它提供了一种简单的方式来定义和应用部署策略,以确保应用程序的可靠性和性能。特点:灵活、可扩展、易于使用。 cds 项目地址: https://gitcode.com/gh_mirrors/cd/cds

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙子旋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值