.drone.yml 配置文件详解

1,204 阅读2分钟

管道将kubernetes管道步骤作为 Kubernetes Pod 中的容器执行。容器提供隔离,允许在同一台机器上安全地执行并发管道。

image.png

1、kind 和 type 属性定义了一个 Kubernetes 管道

2、steps部分定义了一系列 shell 命令。这些命令在 Docker 容器中作为Entrypoint. 如果任何命令返回非零退出代码,则管道失败并退出。

Metadata

image.png

1、使用该metadata部分提供唯一标识的管道资源。示例配置定义了管道命名空间:

Triggers 触发器

docs.drone.io/pipeline/ku…

当您将代码推送到您的存储库、打开拉取请求或创建标签时,您的源代码控制管理系统会自动向 Drone 发送一个 webhook,从而触发管道执行。使用触发器部分来限制管道执行。

image.png

可以在触发器中使用通配符匹配。*请注意,触发器使用 glob 模式匹配,而不是正则表达式。

    ref: 
    - refs/heads/master 
    - refs/heads/** 
    - refs/pull/*/head

您还可以组合多个触发器。*请注意,在组合多个触发器时,所有触发器都必须评估为真。

    branch: 
    - master event: 
    - push

包括语法

    branch:
    include:
    -master
    -feature/*

排除语法

    event:
    exclude:
    -pull_request

Platform

使用platform部分配置目标操作系统和体系结构,并将管道路由到适当的运行器。

image.png

Workspace

Drone 会自动创建一个临时卷,称为您的工作区,它会在其中克隆您的存储库。工作区是管道中每个步骤的当前工作目录。

因为工作空间是一个卷,所以文件系统更改在管道步骤之间保持不变。换句话说,各个步骤可以使用工作空间文件系统进行通信和共享状态。

管道容器内的工作区路径:

image.png

Cloning

Drone 在执行管道步骤之前会自动克隆您的存储库。无需特殊配置。但是,在某些情况下,您可能需要自定义、覆盖或禁用默认克隆行为

The --depth flag

默认克隆配置确实使用该--depth标志。clone您可以通过声明一个块并添加depth属性来强制克隆深度: image.png

# The --tags flag

默认克隆配置不使用该--tags标志。如果您想获取标签,您应该将其作为管道中的一个步骤来处理。例如:

image.png

Steps

流水线步骤被定义为一系列shell命令,这些命令在您的git存储库的根目录中执行。git存储库的跟目录(也称工作区)由管道中的所有步骤共享。

image.png

Commands会覆盖docker入口点

image.png

secret

Drone 提供了使用from_secret语法从命名机密中获取任何配置参数的能力。

image.png

image

流水线步骤被定义为一系列 Docker 容器。因此,每个步骤都必须定义用于创建容器的 Docker 映像。

image.png