Plugin development resources
Links and short notes for developing PipeCD plugins.
PipeCD’s plugin architecture allows anyone to extend piped’s capabilities by creating custom plugins. This guide explains how to develop and contribute plugins.
For more links and local development notes, see Plugin development resources.
In PipeCD v1, plugins are the actors that execute deployments on behalf of piped. Instead of piped directly deploying to platforms, plugins handle platform-specific logic while piped’s core controls deployment flows.
Key concepts:
pipedFor a detailed overview, see the Plugin Architecture blog post.
Plugins can implement one or more of these interfaces:
| Interface | Purpose |
|---|---|
| Deployment | Plan and execute deployment stages |
| LiveState | Fetch and build the state of live resources |
| Drift | Calculate drift between live and git-source manifests |
For example:
/pkg/app/pipedv1/plugin/ in the pipecd repositoryBefore creating a new plugin, study the existing ones:
| Plugin | Complexity | Good for learning |
|---|---|---|
| wait | Simple | Basic plugin structure |
| waitapproval | Simple | Stage-only plugin |
| kubernetes | Complex | Full-featured plugin |
| terraform | Complex | Infrastructure as Code plugin |
Community plugins:
| Plugin | Description |
|---|---|
| opentofu | OpenTofu deployment plugin |
A minimal plugin needs:
your-plugin/
├── go.mod
├── go.sum
├── main.go # Entry point, starts gRPC server
├── plugin.go # Implements plugin interfaces
├── config/ # Plugin-specific configuration
│ └── application.go
└── README.md # Documentation
Plugins are configured in the piped config. See the piped installation guide for configuration examples:
apiVersion: pipecd.dev/v1beta1
kind: Piped
spec:
plugins:
- name: your-plugin
port: 7001 # Any unused port
url: <PLUGIN_URL>
deployTargets: # Optional, depends on plugin
- name: target1
config:
# Plugin-specific config
/pkg/app/pipedv1/plugin/your-plugin/# Build all plugins
make build/plugin
# Run tests
make test/go
# Run piped locally with your plugin
make run/piped CONFIG_FILE=piped-config.yaml EXPERIMENTAL=true INSECURE=true
The community-plugins repository welcomes plugins that may not fit in the official repo.
Thank you for contributing to PipeCD plugins!
Links and short notes for developing PipeCD plugins.
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.