跳到主要内容

工作流

管道至少有一个工作流。工作流是一组按顺序执行的步骤,使用相同的工作空间,该工作空间是一个共享文件夹,包含仓库和来自先前步骤的所有生成数据。

如果在 .woodpecker.yaml 中只有单个配置,Woodpecker 将创建一个具有单个工作流的管道。

通过将配置放置在默认名为 .woodpecker/ 的文件夹中,Woodpecker 将创建一个具有多个工作流的管道,每个工作流以定义它们的文件的名称命名。只有 .yml.yaml 文件将被使用,任何子文件夹中的文件(如 .woodpecker/sub-folder/test.yaml)将被忽略。

您还可以在项目设置中设置一些自定义路径,如 .my-ci/pipelines/ 而不是 .woodpecker/

使用工作流的好处

  • 更快的代码检查/测试反馈,工作流不必完全运行即可将代码检查状态推送到远程
  • 更好地组织管道,按各种关注点使用一个工作流:测试、代码检查、构建和部署
  • 利用更多代理来加快整个管道的执行

示例工作流定义

注意

请注意,文件仅在同一工作流的步骤之间共享(请参阅文件更改是增量的)。这意味着您无法在 deploy 工作流中访问例如 build 工作流的工件。 如果您仍然需要在工作流之间传递工件,则需要使用一些存储插件(例如,一个将文件存储在 Amazon S3 存储桶中的插件)。

.woodpecker/
├── build.yaml
├── deploy.yaml
├── lint.yaml
└── test.yaml
.woodpecker/build.yaml
steps:
- name: build
image: debian:stable-slim
commands:
- echo building
- sleep 5
.woodpecker/deploy.yaml
steps:
- name: deploy
image: debian:stable-slim
commands:
- echo deploying

depends_on:
- lint
- build
- test
.woodpecker/test.yaml
steps:
- name: test
image: debian:stable-slim
commands:
- echo testing
- sleep 5

depends_on:
- build
.woodpecker/lint.yaml
steps:
- name: lint
image: debian:stable-slim
commands:
- echo linting
- sleep 5

状态行

每个工作流都会将自己的状态报告回您的代码托管平台。

流程控制

工作流在单独的代理上并行运行,不共享任何内容。

可以使用 depends_on 元素设置工作流之间的依赖关系。一个工作流不会执行,直到其所有依赖项都成功完成。

depends_on 条目的名称是文件名,不包含路径、前导点和文件扩展名 .yml.yaml。例如,如果项目配置使用 .woodpecker/ 作为 CI 文件的路径,文件名为 .woodpecker/.lint.yaml,则相应的 depends_on 条目将是 lint

 steps:
- name: deploy
image: debian:stable-slim
commands:
- echo deploying

+depends_on:
+ - lint
+ - build
+ - test

即使在失败时也需要运行的工作流应该设置 runs_on 标签。

 steps:
- name: notify
image: debian:stable-slim
commands:
- echo notifying

depends_on:
- deploy

+runs_on: [ success, failure ]
信息

一些工作流不需要源代码,例如在失败时创建通知。 关于 skip_clone 的更多信息,请参阅管道语法