工作流
管道至少有一个工作流。工作流是一组按顺序执行的步骤,使用相同的工作空间,该工作空间是一个共享文件夹,包含仓库和来自先前步骤的所有生成数据。
如果在 .woodpecker.yaml 中只有单个配置,Woodpecker 将创建一个具有单个工作流的管道。
通过将配置放置在默认名为 .woodpecker/ 的文件夹中,Woodpecker 将创建一个具有多个工作流的管道,每个工作流以定义它们的文件的名称命名。只有 .yml 和 .yaml 文件将被使用,任何子文件夹中的文件(如 .woodpecker/sub-folder/test.yaml)将被忽略。
您还可以在项目设置中设置一些自定义路径,如 .my-ci/pipelines/ 而不是 .woodpecker/。
使用工作流的好处
- 更快的代码检查/测试反馈,工作流不必完全运行即可将代码检查状态推送到远程
- 更好地组织管道,按各种关注点使用一个工作流:测试、代码检查、构建和部署
- 利用更多代理来加快整个管道的执行
示例工作流定义
注意
.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 的更多信息,请参阅管道语法