-
Notifications
You must be signed in to change notification settings - Fork 256
Docs v1: added plugin development resources #6643
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
eeshaanSA
merged 3 commits into
pipe-cd:master
from
rahulshendre:feat/make-and-learn-pipecd-plugins
Apr 14, 2026
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
90 changes: 90 additions & 0 deletions
90
....x/contribution-guidelines/contributing-plugins/plugin-development-resources.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,90 @@ | ||
| --- | ||
| title: "Plugin development resources" | ||
| linkTitle: "Plugin development resources" | ||
| weight: 5 | ||
| description: > | ||
| Links and short notes for developing PipeCD plugins. | ||
| --- | ||
|
|
||
| > **Note:** | ||
| > This section is still a work in progress. A full tutorial and an in-docs translation of the Zenn book are planned over time. | ||
| > | ||
| > For a hands-on walkthrough, read [**Build and learn PipeCD plugins**](https://zenn.dev/warashi/books/try-and-learn-pipecd-plugin) (Zenn; Japanese title *作って学ぶ PipeCD プラグイン*). The same book is linked again in [Links](#links), together with other references. Use your browser's translate feature to read this in English. Verify commands and field names against this documentation and the [`pipecd`](https://github.com/pipe-cd/pipecd) repository. | ||
|
|
||
| Use this page together with [Contribute to PipeCD plugins](../), which covers layout, `make` targets, and how to open a pull request. | ||
|
|
||
| ## How the pieces fit together | ||
|
|
||
| - **Control plane**: registers projects and `piped` agents; the web UI shows deployment status. | ||
| - **`piped`**: runs your plugins as separate binaries and talks to them over gRPC. | ||
| - **Plugins**: carry out deployments (and optionally live state and drift) for a platform or tool. | ||
|
|
||
| If you are new to PipeCD v1, read [Plugins](/docs-v1.0.x/concepts/#plugins) and [Migrating from v0 to v1](/docs-v1.0.x/migrating-from-v0-to-v1/). | ||
|
|
||
| ### Terms | ||
|
|
||
| | Term | Meaning | | ||
| |------|---------| | ||
| | **Application** | Git content for one deployable unit: manifests plus a `*.pipecd.yaml` file. | | ||
| | **Deployment** | One run of the deployment pipeline for an app (from Git, a trigger, or the UI). | | ||
| | **Deploy target** | Where the plugin deploys, set under `spec.plugins` in the `piped` config. | | ||
| | **Pipeline** | Ordered **stages** (for example sync, canary, wait) from the application config. | | ||
| | **Stage** | One step in the pipeline; your plugin implements the stages it supports. | | ||
|
|
||
| For plugin interfaces (**Deployment**, **LiveState**, **Drift**), see [Plugin types](../#plugin-types). A first plugin usually implements **Deployment** only. | ||
|
|
||
| ## Local development | ||
|
|
||
| Use a `piped` v1 build that matches your work. From the repo you can run `make run/piped` as in the [contributing guide](../#build-and-test). To install a release binary, see [Installing on a single machine](/docs-v1.0.x/installation/install-piped/installing-on-single-machine/). | ||
|
|
||
| Example when running the v1 `piped` CLI: | ||
|
|
||
| ```console | ||
| ./piped run --config-file=PATH_TO_PIPED_CONFIG --insecure=true | ||
| ``` | ||
|
|
||
| Use `--insecure=true` only when it matches your control plane (for example plain HTTP or your dev TLS settings). | ||
|
|
||
| The install guide linked above uses the same `run` subcommand. If another page or tutorial shows different syntax, run `./piped --help` on your binary to match your build. | ||
|
|
||
| Older blog posts or books may target an older `piped`. Prefer this documentation and the default branch of [`pipecd`](https://github.com/pipe-cd/pipecd). | ||
|
|
||
| ## `piped` config and application config | ||
|
|
||
| You need both: | ||
|
|
||
| 1. **`piped` configuration**: control plane address, Git `repositories`, and `spec.plugins` (URL, port, `deployTargets`, plugin-specific fields). See [Configuring a Plugin](/docs-v1.0.x/user-guide/managing-piped/configuring-a-plugin/) and [Piped configuration reference](/docs-v1.0.x/user-guide/managing-piped/configuration-reference/). | ||
| 2. **Application configuration**: the `*.pipecd.yaml` in Git (plugin, pipeline, deploy options). See [Adding an application](/docs-v1.0.x/user-guide/managing-application/adding-an-application/) and [Application configuration reference](/docs-v1.0.x/user-guide/managing-application/configuration-reference/). | ||
|
|
||
| Code in your plugin reads the application config via its own types (often under `config/`). `deployTargets` come from the `piped` config. | ||
|
|
||
| ## Example plugins | ||
|
|
||
| | Plugin | Notes | | ||
| |--------|-------| | ||
| | [kubernetes](https://github.com/pipe-cd/pipecd/tree/master/pkg/app/pipedv1/plugin/kubernetes) | Full official plugin | | ||
| | [wait](https://github.com/pipe-cd/pipecd/tree/master/pkg/app/pipedv1/plugin/wait) | Small official example | | ||
| | [example-stage](https://github.com/pipe-cd/community-plugins/tree/main/plugins/example-stage) | Community sample (see [Installing on a single machine](/docs-v1.0.x/installation/install-piped/installing-on-single-machine/)) | | ||
|
|
||
| ## Cache under ~/.piped | ||
|
|
||
| After rebuilding a plugin, `piped` may still use files under **`~/.piped`** (including **`~/.piped/plugins`**). If your changes do not show up, remove those directories or clear the cache your team uses, then restart `piped`. | ||
|
|
||
| ## Debugging | ||
|
|
||
| - **Web UI**: deployment and stage status. | ||
| - **Stdout**: logs from `piped` and the plugin (verbose but quick for local work). | ||
| - **Stage logs**: through the SDK; see [`StageLogPersister`](https://github.com/pipe-cd/pipecd/blob/master/pkg/plugin/sdk/logpersister/persister.go) in the repo. | ||
|
|
||
| ## Links | ||
|
|
||
| | Resource | Notes | | ||
| |----------|-------| | ||
| | [**Build and learn PipeCD plugins** (Zenn)](https://zenn.dev/warashi/books/try-and-learn-pipecd-plugin) | Japanese tutorial book (*作って学ぶ PipeCD プラグイン*) | | ||
| | [DeepWiki (pipecd)](https://deepwiki.com/pipe-cd/pipecd) | Unofficial wiki-style overview of the repository. | | ||
| | [Plugin Architecture RFC](https://github.com/pipe-cd/pipecd/blob/master/docs/rfcs/0015-pipecd-plugin-arch-meta.md) | Design (RFC) | | ||
| | [Plugin Architecture overview (blog)](https://pipecd.dev/blog/2024/11/28/overview-of-the-plan-for-pluginnable-pipecd/) | Architecture overview | | ||
| | [Plugin alpha release (blog)](https://pipecd.dev/blog/2025/06/16/plugin-architecture-piped-alpha-version-has-been-released/) | Piped plugin alpha | | ||
| | [#pipecd (CNCF Slack)](https://cloud-native.slack.com/) | Community chat | | ||
|
|
||
| See also [Contributing to PipeCD](/docs-v1.0.x/contribution-guidelines/contributing-to-pipecd/) for local control plane setup and pull requests. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.