Drone CI 中文文档

Kubernetes 流水线

请注意,在 Drone Cloud 上禁用了 Kubernetes 流水线。此功能仅在自托管时可用。

本教程将帮助你创建和执行一个简单的 Kubernetes 流水线。请参阅我们的流水线文档 了解详细的使用说明。

认证

首先,在浏览器中访问你的 Drone Server 地址。如果你尚未通过身份验证,Drone 会将你重定向到 GitHub 进行登录。

登录后,你将被重定向回你的 Drone Web 管理界面。如果这是你第一次使用 Drone,你的 Web 管理界面将在几秒钟内为空,而 Drone 会将你的存储库列表与 GitHub 同步。

启用你的存储库

接下来,搜索你的存储库并单击 Enable 按钮。单击启用按钮会在你的存储库中添加一个 Webhook,以便在你每次推送代码时通知 Drone。请注意,你必须拥有存储库的管理员权限才能启用。

配置你的流水线

接下来,你需要通过在 git 存储库的根目录中创建一个 .drone.yml 文件来配置流水线。在这个文件中,我们定义了每次收到 webhook 时执行的一系列步骤。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
kind: pipeline
type: kubernetes
name: default

steps:
- name: greeting
  image: alpine
  commands:
  - echo hello
  - echo world

以下是此示例中使用变量的概览:

  • kind
    kind 属性定义了对象的种类。此示例定义了一个流水线对象。其他类型的对象是 secretsignature 对象。
  • type
    type 属性定义了流水线的类型。此示例定义了一个 Kubernetes 流水线,其中每个流水线步骤都在 Pod 内执行。Drone 支持 不同类型 的流水线执行环境。
  • name
    name 属性定义了流水线的名称。你可以为你的项目定义一个或多个流水线。
  • steps
    Step 部分定义了一系列串行执行的流水线步骤。如果流水线中的任何步骤失败,流水线将立即退出。
    • name
      name 属性定义流水线步骤的名称。
    • image
      image 属性定义了一个容器镜像,shell 命令在其中执行。你可以使用来自任何容器注册表(Registry,包括私有容器注册表)的流水线中的任何镜像。
    • commands
      commands 属性将在容器内执行的 shell 命令列表定义为入口点。如果任何命令返回非零退出代码,则流水线步骤将失败。

请参阅我们的 流水线文档 以获取配置选项的完整列表。

其他示例

  • 你可以向流水线添加多个步骤:

    kind: pipeline
    type: kubernetes
    name: greeting
    
    steps:
    - name: en
      image: alpine
      commands:
      - echo hello world
    
    - name: fr
      image: alpine
      commands:
      - echo bonjour monde
    
  • 你可以根据分支或 Webhook 事件,有条件地 限制 流水线步骤执行:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    
    kind: pipeline
    type: kubernetes
    name: greeting
    
    steps:
    - name: en
      image: alpine
      commands:
      - echo hello world
    
    - name: fr
      image: alpine
      commands:
      - echo bonjour monde
      when:
        branch:
        - develop
    
  • 你甚至可以定义多条流水线

    kind: pipeline
    type: kubernetes
    name: en
    
    steps:
    - name: greeting
      image: alpine
      commands:
      - echo hello world
    
    ---
    kind: pipeline
    type: kubernetes
    name: fr
    
    steps:
    - name: greeting
      image: alpine
      commands:
      - echo bonjour monde
    
  • 你可以在任何容器注册表(Registry)中使用任何jin

    kind: pipeline
    type: kubernetes
    name: default
    
    steps:
    - name: test
      image: golang:1.13
      commands:
      - go build
      - go test -v
    

执行你的流水线

最后一步是将你的 .drone.yml 提交到你的存储库并推送你的更改。当你推送代码时,GitHub 会向 Drone 发送一个 Webhook,然后 Drone 会执行你的流水线。