Backstage模板YAML是否存在类UUID的内置数字生成变量
Backstage 模板配置中随机/UUID生成能力说明
Backstage 软件模板默认没有提供$RANDOM这类可直接引用的全局内置变量,但模板引擎自带的标准过滤器完全可以配合fetch:template能力实现随机唯一标识生成,不需要额外安装插件,所有当前维护版本的Backstage都原生支持:
- 生成标准UUID
直接在fetch:template的插值逻辑中调用内置uuid过滤器即可,支持生成符合RFC 4122标准的v4版本UUID,示例配置:
上述插值写法不仅可以写在YAML配置的steps: - id: fetch-base name: 拉取项目模板骨架 action: fetch:template input: url: ./template-skeleton targetPath: ./ values: # 生成带连字符的标准UUID resourceUid: {{ "v4" | uuid | quote }} # 生成8位长度的短UUID(适合做资源名后缀) shortUid: {{ "v4" | uuid | replace("-", "") | truncate(8, true, "") | quote }}values字段里,也可以直接在模板骨架的文件内容、文件名占位符中直接使用。 - 生成随机数字串/自定义随机字符串
如果需要生成纯数字随机集合、自定义字符集的随机串,可以结合内置的random、randomString过滤器实现,示例:values: # 生成6位纯数字随机验证码 verifyCode: {{ range(6) | map(() => [0,1,2,3,4,5,6,7,8,9] | random) | join("") | quote }} # 生成16位含数字、小写字母的随机标识 randomSuffix: {{ "0123456789abcdefghijklmnopqrstuvwxyz" | randomString(16) | quote }}
注意:所有动态生成值的插值逻辑不要写在模板顶层的
parameters字段下,要放在具体步骤(比如fetch:template)的input.values域,或者直接写在模板文件内部,否则会因为参数解析阶段上下文未加载抛出解析错误。
如果是使用2022年之前的0.x老版本Backstage,内置过滤器不全的情况下,可以通过自定义Template Action的方式扩展上述能力,当前正式维护版本不需要额外开发。
内容的提问来源于stack exchange,提问作者chocokoala
相关产品推荐
相关产品推荐

