跳到主要内容

插件

插件是执行预定义任务的管道步骤,在您的管道中配置为步骤。 插件可用于部署代码、发布构件、发送通知等。

它们会自动从代理配置的默认容器注册表中拉取。

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,但工作目录会相应地动态调整,作为插件的用户,您不必关心这一点。此外,您不能将插件与 commandsentrypoint 一起使用,这将失败。使用 environment 是可能的,但在这种情况下,插件在内部不再被视为插件。然后容器无法再通过插件过滤器访问密钥,容器也不会在没有明确定义的情况下获得特权。

查找插件

对于官方插件,您可以使用 Woodpecker 插件索引:

提示

还有其他带有附加插件的插件列表。请记住,Drone 插件通常受支持,但可能需要一些调整和微调。