<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>PipeCD – Contribute to PipeCD plugins</title>
    <link>https://pipecd.dev/docs-v1.0.x/contribution-guidelines/contributing-plugins/</link>
    <description>Recent content in Contribute to PipeCD plugins on PipeCD</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    
	  <atom:link href="https://pipecd.dev/docs-v1.0.x/contribution-guidelines/contributing-plugins/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs-V1.0.x: Plugin development resources</title>
      <link>https://pipecd.dev/docs-v1.0.x/contribution-guidelines/contributing-plugins/plugin-development-resources/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://pipecd.dev/docs-v1.0.x/contribution-guidelines/contributing-plugins/plugin-development-resources/</guid>
      <description>
        
        
        &lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;
This section is still a work in progress. A full tutorial and an in-docs translation of the Zenn book are planned over time.&lt;/p&gt;
&lt;p&gt;For a hands-on walkthrough, read &lt;a href=&#34;https://zenn.dev/warashi/books/try-and-learn-pipecd-plugin&#34;&gt;&lt;strong&gt;Build and learn PipeCD plugins&lt;/strong&gt;&lt;/a&gt; (Zenn; Japanese title &lt;em&gt;作って学ぶ PipeCD プラグイン&lt;/em&gt;). The same book is linked again in &lt;a href=&#34;https://pipecd.dev/docs-v1.0.x/contribution-guidelines/contributing-plugins/plugin-development-resources/#links&#34;&gt;Links&lt;/a&gt;, together with other references. Use your browser&amp;rsquo;s translate feature to read this in English. Verify commands and field names against this documentation and the &lt;a href=&#34;https://github.com/pipe-cd/pipecd&#34;&gt;&lt;code&gt;pipecd&lt;/code&gt;&lt;/a&gt; repository.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Use this page together with &lt;a href=&#34;https://pipecd.dev/docs-v1.0.x/contribution-guidelines/&#34;&gt;Contribute to PipeCD plugins&lt;/a&gt;, which covers layout, &lt;code&gt;make&lt;/code&gt; targets, and how to open a pull request.&lt;/p&gt;
&lt;h2 id=&#34;how-the-pieces-fit-together&#34;&gt;How the pieces fit together&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Control plane&lt;/strong&gt;: registers projects and &lt;code&gt;piped&lt;/code&gt; agents; the web UI shows deployment status.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;piped&lt;/code&gt;&lt;/strong&gt;: runs your plugins as separate binaries and talks to them over gRPC.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins&lt;/strong&gt;: carry out deployments (and optionally live state and drift) for a platform or tool.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are new to PipeCD v1, read &lt;a href=&#34;https://pipecd.dev/docs-v1.0.x/concepts/#plugins&#34;&gt;Plugins&lt;/a&gt; and &lt;a href=&#34;https://pipecd.dev/docs-v1.0.x/migrating-from-v0-to-v1/&#34;&gt;Migrating from v0 to v1&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;terms&#34;&gt;Terms&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Term&lt;/th&gt;
          &lt;th&gt;Meaning&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Application&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Git content for one deployable unit: manifests plus a &lt;code&gt;*.pipecd.yaml&lt;/code&gt; file.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;One run of the deployment pipeline for an app (from Git, a trigger, or the UI).&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Deploy target&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Where the plugin deploys, set under &lt;code&gt;spec.plugins&lt;/code&gt; in the &lt;code&gt;piped&lt;/code&gt; config.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Pipeline&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Ordered &lt;strong&gt;stages&lt;/strong&gt; (for example sync, canary, wait) from the application config.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Stage&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;One step in the pipeline; your plugin implements the stages it supports.&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For plugin interfaces (&lt;strong&gt;Deployment&lt;/strong&gt;, &lt;strong&gt;LiveState&lt;/strong&gt;, &lt;strong&gt;Drift&lt;/strong&gt;), see &lt;a href=&#34;https://pipecd.dev/docs-v1.0.x/contribution-guidelines/#plugin-types&#34;&gt;Plugin types&lt;/a&gt;. A first plugin usually implements &lt;strong&gt;Deployment&lt;/strong&gt; only.&lt;/p&gt;
&lt;h2 id=&#34;local-development&#34;&gt;Local development&lt;/h2&gt;
&lt;p&gt;Use a &lt;code&gt;piped&lt;/code&gt; v1 build that matches your work. From the repo you can run &lt;code&gt;make run/piped&lt;/code&gt; as in the &lt;a href=&#34;https://pipecd.dev/docs-v1.0.x/contribution-guidelines/#build-and-test&#34;&gt;contributing guide&lt;/a&gt;. To install a release binary, see &lt;a href=&#34;https://pipecd.dev/docs-v1.0.x/installation/install-piped/installing-on-single-machine/&#34;&gt;Installing on a single machine&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Example when running the v1 &lt;code&gt;piped&lt;/code&gt; CLI:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-style:italic&#34;&gt;./piped run --config-file=PATH_TO_PIPED_CONFIG --insecure=true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Use &lt;code&gt;--insecure=true&lt;/code&gt; only when it matches your control plane (for example plain HTTP or your dev TLS settings).&lt;/p&gt;
&lt;p&gt;The install guide linked above uses the same &lt;code&gt;run&lt;/code&gt; subcommand. If another page or tutorial shows different syntax, run &lt;code&gt;./piped --help&lt;/code&gt; on your binary to match your build.&lt;/p&gt;
&lt;p&gt;Older blog posts or books may target an older &lt;code&gt;piped&lt;/code&gt;. Prefer this documentation and the default branch of &lt;a href=&#34;https://github.com/pipe-cd/pipecd&#34;&gt;&lt;code&gt;pipecd&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;piped-config-and-application-config&#34;&gt;&lt;code&gt;piped&lt;/code&gt; config and application config&lt;/h2&gt;
&lt;p&gt;You need both:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;piped&lt;/code&gt; configuration&lt;/strong&gt;: control plane address, Git &lt;code&gt;repositories&lt;/code&gt;, and &lt;code&gt;spec.plugins&lt;/code&gt; (URL, port, &lt;code&gt;deployTargets&lt;/code&gt;, plugin-specific fields). See &lt;a href=&#34;https://pipecd.dev/docs-v1.0.x/user-guide/managing-piped/configuring-a-plugin/&#34;&gt;Configuring a Plugin&lt;/a&gt; and &lt;a href=&#34;https://pipecd.dev/docs-v1.0.x/user-guide/managing-piped/configuration-reference/&#34;&gt;Piped configuration reference&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Application configuration&lt;/strong&gt;: the &lt;code&gt;*.pipecd.yaml&lt;/code&gt; in Git (plugin, pipeline, deploy options). See &lt;a href=&#34;https://pipecd.dev/docs-v1.0.x/user-guide/managing-application/adding-an-application/&#34;&gt;Adding an application&lt;/a&gt; and &lt;a href=&#34;https://pipecd.dev/docs-v1.0.x/user-guide/managing-application/configuration-reference/&#34;&gt;Application configuration reference&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Code in your plugin reads the application config via its own types (often under &lt;code&gt;config/&lt;/code&gt;). &lt;code&gt;deployTargets&lt;/code&gt; come from the &lt;code&gt;piped&lt;/code&gt; config.&lt;/p&gt;
&lt;h2 id=&#34;example-plugins&#34;&gt;Example plugins&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Plugin&lt;/th&gt;
          &lt;th&gt;Notes&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/pipe-cd/pipecd/tree/master/pkg/app/pipedv1/plugin/kubernetes&#34;&gt;kubernetes&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Full official plugin&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/pipe-cd/pipecd/tree/master/pkg/app/pipedv1/plugin/wait&#34;&gt;wait&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Small official example&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/pipe-cd/community-plugins/tree/main/plugins/example-stage&#34;&gt;example-stage&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Community sample (see &lt;a href=&#34;https://pipecd.dev/docs-v1.0.x/installation/install-piped/installing-on-single-machine/&#34;&gt;Installing on a single machine&lt;/a&gt;)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;cache-under-piped&#34;&gt;Cache under ~/.piped&lt;/h2&gt;
&lt;p&gt;After rebuilding a plugin, &lt;code&gt;piped&lt;/code&gt; may still use files under &lt;strong&gt;&lt;code&gt;~/.piped&lt;/code&gt;&lt;/strong&gt; (including &lt;strong&gt;&lt;code&gt;~/.piped/plugins&lt;/code&gt;&lt;/strong&gt;). If your changes do not show up, remove those directories or clear the cache your team uses, then restart &lt;code&gt;piped&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;debugging&#34;&gt;Debugging&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Web UI&lt;/strong&gt;: deployment and stage status.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stdout&lt;/strong&gt;: logs from &lt;code&gt;piped&lt;/code&gt; and the plugin (verbose but quick for local work).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stage logs&lt;/strong&gt;: through the SDK; see &lt;a href=&#34;https://github.com/pipe-cd/pipecd/blob/master/pkg/plugin/sdk/logpersister/persister.go&#34;&gt;&lt;code&gt;StageLogPersister&lt;/code&gt;&lt;/a&gt; in the repo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;links&#34;&gt;Links&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Resource&lt;/th&gt;
          &lt;th&gt;Notes&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://zenn.dev/warashi/books/try-and-learn-pipecd-plugin&#34;&gt;&lt;strong&gt;Build and learn PipeCD plugins&lt;/strong&gt; (Zenn)&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Japanese tutorial book (&lt;em&gt;作って学ぶ PipeCD プラグイン&lt;/em&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://deepwiki.com/pipe-cd/pipecd&#34;&gt;DeepWiki (pipecd)&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Unofficial wiki-style overview of the repository.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/pipe-cd/pipecd/blob/master/docs/rfcs/0015-pipecd-plugin-arch-meta.md&#34;&gt;Plugin Architecture RFC&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Design (RFC)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://pipecd.dev/blog/2024/11/28/overview-of-the-plan-for-pluginnable-pipecd/&#34;&gt;Plugin Architecture overview (blog)&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Architecture overview&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://pipecd.dev/blog/2025/06/16/plugin-architecture-piped-alpha-version-has-been-released/&#34;&gt;Plugin alpha release (blog)&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Piped plugin alpha&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://cloud-native.slack.com/&#34;&gt;#pipecd (CNCF Slack)&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Community chat&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;See also &lt;a href=&#34;https://pipecd.dev/docs-v1.0.x/contribution-guidelines/contributing-to-pipecd/&#34;&gt;Contributing to PipeCD&lt;/a&gt; for local control plane setup and pull requests.&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
