配置(Config)

    正如概述中所提到的,配置包含了以下几个部分:

    • tools
    • apps
    • pipelineTemplates
    • vars

    其中,config 必选,toolsapps 至少有一个不为空,其余部分可选。

    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 用来定义变量的值,而后可以在 toolsapps、 中使用,语法是 [[ 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 }})。