配置(Config)
正如概述中所提到的,配置包含了以下几个部分:
tools
apps
pipelineTemplates
vars
其中,config
必选,tools
和 apps
至少有一个不为空,其余部分可选。
DevStream 支持两种组织配置的方式:
- 目录:也可以把它们分开放到同一个文件夹下的多个 YAML 文件中,只要这些文件的名字以
.yaml
或.yml
结尾,且内容拼接后包含了 DevStream 所需的各个部分即可。
然后在执行 init
等命令时,加上 或 --config-file
参数指定配置文件/目录的路径。
如:
- 单文件:
dtm init -f config.yaml
- 目录:
dtm init -f dirname
指 DevStream 本身的配置,即 config
部分,比如状态存储的方式等。详见
3.2 工具的配置
tools
部分声明了工具链中的工具,详见
3.3 变量
DevStream 提供了变量语法。使用 vars
用来定义变量的值,而后可以在 tools
、apps
、 中使用,语法是 [[ varName ]]
。
示例:
YAML
类似于”变量”,你可以使用 [[env "env_key"]]
的方式来引用环境变量。
4.2 输出(Output)
介绍
在 DevStream 的配置文件中,我们在配置 工具 的 Options 时,可以使用其他 工具 的 输出 来填充。
例如,如果 工具 A 有一个输出,我们可以将这个输出值作为 工具 B 的 Options。
注意:
- 当前,若 B 使用了 A 的输出,并不意味着 B “依赖于” A
- 如果 B 确实需要 “依赖于” A,即,我们想要保证在 B 运行之前行运行 A,我们仍然需要使用
dependsOn
关键字(详见上一节 “核心概念“)。
语法
Text Only
例如,对于下面给定的配置:
YAML
TOOL_NAME
是 “trello”TOOL_INSTANCE_ID
是 “default”
如果 “trello” 这个 工具 有一个键为 “boardId” 的输出项,那么我们就能通过以下语法来引用对应的输出的值:
Text Only
例子——真实使用场景
配置如下:
YAML
argocdapp
的 “default” 实例依赖于repo-scaffolding
的 “golang-github” 实例argocdapp
的 “default” 实例中有一个 options 是 “options.source.repoURL”,它引用了repo-scaffolding
的 “golang-github” 实例的 “repoURL” 输出(${{ repo-scaffolding.golang-github.outputs.repoURL }}
)。