本教程将帮助你创建和执行一个简单的 Docker 流水线。请参阅我们的流水线 文档 了解详细的使用说明。
认证
首先,在浏览器中访问你的 Drone Server 地址。如果你尚未通过身份验证,Drone 会将你重定向到 GitHub 进行登录。
登录后,你将被重定向回你的 Drone Web 管理界面。如果这是你第一次使用 Drone,你的 Web 管理界面将在几秒钟内为空,而 Drone 会将你的存储库列表与 GitHub 同步。
启用你的存储库
接下来,搜索你的存储库并单击 Enable 按钮。单击启用按钮会在你的存储库中添加一个 Webhook,以便在你每次推送代码时通知 Drone。请注意,你必须拥有存储库的管理员权限才能启用。
配置你的流水线
接下来,你需要通过在 git 存储库的根目录中创建一个 .drone.yml
文件来配置流水线。在这个文件中,我们定义了每次收到 webhook 时执行的一系列步骤。
|
|
以下是此示例中使用变量的概览:
-
type
- type 属性定义流水线的类型。此示例定义了一个 Docker 流水线,其中每个流水线步骤都在 Docker 容器内执行。Drone 支持 不同类型 的流水线执行环境。
-
name
- name 属性定义了流水线的名称。你可以为你的项目定义一个或多个流水线。
steps
:Step 部分定义了一系列串行执行的流水线步骤。如果流水线中的任何步骤失败,流水线将立即退出。-
name
- name 属性定义流水线步骤的名称。
-
image
- image 属性定义了一个容器镜像,shell 命令在其中执行。你可以使用来自任何容器注册表(Registry,包括私有容器注册表)的流水线中的任何镜像。
-
commands
- commands 属性将在容器内执行的 shell 命令列表定义为入口点。如果任何命令返回非零退出代码,则流水线步骤将失败。
-
请参阅我们的 流水线文档 以获取配置选项的完整列表。
其他示例
-
你可以向流水线添加多个步骤:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
kind: pipeline type: docker 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: docker name: greeting steps: - name: en image: alpine commands: - echo hello world - name: fr image: alpine commands: - echo bonjour monde when: branch: - develop
-
你甚至可以定义多条流水线:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
kind: pipeline type: docker name: en steps: - name: greeting image: alpine commands: - echo hello world --- kind: pipeline type: docker name: fr steps: - name: greeting image: alpine commands: - echo bonjour monde
-
你可以有条件地 限制 流水线执行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
kind: pipeline type: docker name: en steps: - name: greeting image: alpine commands: - echo hello world trigger: event: - push --- kind: pipeline type: docker name: fr steps: - name: greeting image: alpine commands: - echo bonjour monde trigger: event: - pull_request
-
你可以使用任何 docker 注册表中的任何 image:
1 2 3 4 5 6 7 8 9 10
kind: pipeline type: docker name: default steps: - name: test image: gcr.io/library/golang commands: - go build - go test -v
-
你可以为集成测试定义 服务容器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
kind: pipeline type: docker name: default steps: - name: test image: golang:1.13 commands: - go build - go test -v services: - name: redis image: redis
-
你可以使用 插件 与第三方系统集成并执行常见任务,例如通知、发布或部署软件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
kind: pipeline type: docker name: default steps: - name: test image: golang:1.13 commands: - go build - go test -v - name: notify image: plugins/slack settings: channel: dev webhook: https://hooks.slack.com/services/...
-
你还可以从 secrets 获取敏感参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
kind: pipeline type: docker name: default steps: - name: test image: golang:1.13 commands: - go build - go test -v - name: notify image: plugins/slack settings: channel: dev webhook: from_secret: endpoint
执行你的流水线
最后一步是将你的 .drone.yml
提交到你的存储库并推送你的更改。当你推送代码时,GitHub 会向 Drone 发送一个 Webhook,然后 Drone 会执行你的流水线。