• 工作流程

工作流程

流水线至少有一个工作流程.一个工作流是一组按顺序执行的步骤,使用同一个工作区,该工作区是一个共享文件夹,包含存储库和所有先前步骤生成的数据.

如果在.woodpecker.yml中只有一个配置 悟空平台将创建一个只有一个工作流的流水线.

将配置放置在一个名为默认文件夹 .woodpecker/ 的文件夹中,悟空平台将创建一个有多个工作流的流水线,每个工作流均以定义它们的文件的名称命名.仅使用 .yml 和 .yaml 文件,任何子文件夹中的文件都将被忽略,例如 .woodpecker/sub-folder/test.yml.

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

使用工作流的好处

  • 更快的 lint/test 反馈,工作流不必完全运行即可将 lint 状态推送到远程
  • 通过使用一个工作流管理一个流水线中的各种关注点,如测试、linting、构建和部署,来进行更好的组织
  • 利用更多的代理加快整个流水线的执行速度

样例工作流定义

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

.woodpecker/
├── .build.yml
├── .deploy.yml
├── .lint.yml
└── .test.yml

.woodpecker/.build.yml

pipeline:
  build:
    image: debian:stable-slim
    commands:
      - echo building
      - sleep 5

.woodpecker/.deploy.yml

pipeline:
  deploy:
    image: debian:stable-slim
    commands:
      - echo deploying

depends_on:
  - lint
  - build
  - test

.woodpecker/.test.yml

pipeline:
  test:
    image: debian:stable-slim
    commands:
      - echo testing
      - sleep 5

depends_on:
  - build

.woodpecker/.lint.yml

pipeline:
  lint:
    image: debian:stable-slim
    commands:
      - echo linting
      - sleep 5

状态行

每个工作流将向您的锻造厂报告自己的状态.

流程控制

工作流在不同的代理上并行运行,彼此不共享.

可以使用depends_on元素设置工作流之间的依赖关系.只有在所有依赖项成功完成后,工作流才会执行.

depends_on条目的名称是没有路径、前导点和文件扩展名.yml或.yaml的文件名.例如,如果项目配置使用.woodpecker/作为CI文件的路径,并且有一个名为.woodpecker/.lint.yml的文件,则相应的depends_on条目将是lint.

pipeline:
  deploy:
    image: debian:stable-slim
    commands:
      - echo deploying

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

需要在失败情况下运行的工作流应设置runs_on标签.

pipeline:
  notify:
    image: debian:stable-slim
    commands:
      - echo notifying

depends_on:
  - deploy

+runs_on: [ success, failure ]

有些工作流程不需要源代码,比如在失败时创建通知.请阅读有关 pipeline 语法中 skip_clone 的更多信息.