插件
插件是执行预定义任务的管道步骤,在您的管道中配置为步骤。 插件可用于部署代码、发布工件、发送通知等。
它们会自动从代理配置的默认容器注册表中拉取。
Dockerfile
FROM cloud/kubectl
COPY deploy /usr/local/deploy
ENTRYPOINT ["/usr/local/deploy"]
deploy
kubectl apply -f $PLUGIN_TEMPLATE
.woodpecker.yaml
steps:
- name: deploy-to-k8s
image: cloud/my-k8s-plugin
settings:
template: config/k8s/service.yaml
使用 Prettier 和 S3 插件的示例管道:
steps:
- name: build
image: golang
commands:
- go build
- go test
- name: prettier
image: woodpeckerci/plugin-prettier
- name: publish
image: woodpeckerci/plugin-s3
settings:
bucket: my-bucket-name
source: some-file-name
target: /target/some-file
插件隔离
插件只是管道步骤。它们共享构建工作空间,挂载为卷,因此可以访问您的源代码树。 虽然普通步骤都是关于任意代码执行,但插件应该只允许插件作者意图的功能。
这就是为什么有一些限制。工作空间基础总是挂载在 /woodpecker,但工作目录会动态调整,因此作为插件用户,您不应该关心这个。此外,您不能将插件与 commands 或 entrypoint 一起使用,这会导致失败。使用 environment 是可能的,但是在这种情况下,插件在内部不再被视为插件。然后容器无法再使用插件过滤器访问密钥,并且容器在没有明确定义的情况下不会获得特权。
查找插件
对于官方插件,您可以使用 Woodpecker 插件索引:
提示
还有其他插件列表包含额外的插件。请记住,Drone 插件通常受支持,但可能需要一些调整和微调。