yml中支持从云效变量获取的写法吗?

yml中支持从云效变量获取的写法吗?671a1067c67b07f56fc918f4afcb5e17.png

展开
收起
三分钟热度的鱼 2024-03-13 15:39:51 66 分享 版权
阿里云 AI 助理回答

在云效的 YAML 配置中,支持从云效变量(包括环境变量和变量组)获取值并使用。以下是详细的说明和用法:


1. 通过 variables 定义和使用环境变量

在 YAML 文件中,可以通过 variables 定义流水线级别的环境变量,并在流水线的各个阶段、任务和步骤中引用这些变量。

示例:

variables:
  - key: appname
    value: myapp
  - key: envname
    type: String
    value: DEV

在后续的步骤中,可以通过 ${key} 的方式引用这些变量:

steps:
  my_step:
    name: 执行命令
    step: Command
    with:
      run: |
        echo ${appname} # 输出 myapp
        echo ${envname} # 输出 DEV

注意
- 变量的 key 必须符合命名规则:仅支持 1-128 位大小写英文字母、数字、下划线 _,且以字母开头,大小写敏感。 - 支持的变量类型包括:字符串(String)、数字(Number)、布尔值(Boolean)和对象(Object)。


2. 通过 variableGroups 关联通用变量组

如果需要使用通用变量组中的变量,可以通过 variableGroups 关联一个或多个变量组。关联后,变量组中的变量可以在流水线中直接引用。

示例:

variableGroups: [123, 456] # 关联变量组 ID 为 123 和 456 的通用变量组

在步骤中引用变量组中的变量:

steps:
  my_step:
    name: 执行命令
    step: Command
    with:
      run: |
        echo ${group_var_key} # 引用变量组中的变量

注意
- 如果多个变量组中存在同名的 key,则按照关联顺序,排序靠后的变量组会覆盖前面的值。 - 变量组支持私密变量,而静态配置的 variables 不支持私密变量。


3. 变量优先级

云效流水线中,变量的优先级遵循以下规则(从高到低): 1. 运行时输入:通过手动运行配置弹窗、OpenAPI 触发参数或 Webhook 触发参数设置的变量。 2. YAML step:部分 step 语法中定义的变量。 3. YAML pipeline:在 YAML 文件中通过 variables 定义的变量。 4. YAML pipeline:通过 variableGroups 关联的通用变量组。 5. UI 配置:在流水线页面上配置的变量。 6. UI 配置:在流水线页面上关联的通用变量组。

重要提醒
- 运行时输入的变量不支持私密变量,但通过 UI 配置或变量组关联的变量可以支持私密变量。 - 建议尽量在 YAML 文件中配置所有环境变量,除非涉及私密配置项或需要运行时动态设置的变量。


4. 动态渲染与模板支持

在模板模式的流水线中,可以通过 {{ .key }} 的方式引用变量,并作为流水线模板的渲染参数。

示例:

template:
  variables:
    - key: appName
      value: myApp
  stages:
    my_stage:
      name: 构建阶段
      jobs:
        my_job:
          name: 构建任务
          steps:
            my_step:
              name: 执行命令
              step: Command
              with:
                run: |
                  echo {{ .appName }} # 动态渲染变量

5. 服务链接与外部变量

如果需要获取外部服务的配置或账密等变量,可以通过服务链接的方式实现。例如,OSS、Docker、Kubernetes 等服务的配置可以通过对应的 SDK 或 API 获取。

示例(OSS 配置):

const accessKeyID = ossRamCertificate.accessKeyID;
const accessKeySecret = ossRamCertificate.accessKeySecret;
const securityToken = ossRamCertificate.securityToken;
const bucket = process.env.OSS_BUCKET as string;

step.info("-oss-");
step.info(accessKeyID);
step.info(accessKeySecret);
step.info(securityToken);
step.info(bucket);
step.info("-oss-");

注意
- 不同的服务链接支持的类型和代码实现方式有所不同,具体可参考相关文档。


总结

在云效的 YAML 配置中,支持通过 variablesvariableGroups 获取和使用变量。变量的优先级和作用范围需要根据实际需求进行合理配置,尤其是涉及私密变量或运行时动态设置的场景。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答标签:
问答地址:

云效,企业级一站式研发协同平台,数十万企业都在用。支持公共云、专有云和混合云多种部署形态,通过云原生新技术和研发新模式,助力创新创业和数字化转型企业快速实现研发敏捷和组织敏捷,打造“双敏”组织,实现多倍效能提升。

热门讨论

热门文章

还有其他疑问?
咨询AI助理