1.6 KiB

Library for creating Woodpecker CI plugins

Provides basic structure and helpers to load Woodpecker CI environment variables while also supporting reading Drone CI environment variables where available.

Adds logging support based on zerolog library and allows configurable HTTP client library.

Builtin settings

Settings Name Environment variable Default Description
log_level - info Sets log level (panic, fatal, error, warn, info, debug, trace)
skip_verify - false -
SOCKS_PROXY none SOCKS5 proxy to use for connections
SOCKS_PROXY_OFF none Do not use SOCKS5 proxy

Creating plugin

package main

import (


type Settings struct {
	// TODO: Plugin settings
	SampleFlag string

type Plugin struct {
	Settings *Settings

func (p *Plugin) Flags() []cli.Flag {
	return []cli.Flag{
		// TODO: Add flags
			Name:        "sample.flag",
			Usage:       "sample flag",
			EnvVars:     []string{"PLUGIN_SAMPLE_FLAG"},
			Destination: &p.Settings.SampleFlag,

func (p *Plugin) Execute(ctx context.Context) error {
	// TODO: Implement execution
	return nil

func main() {
	p := &Plugin{
		Settings: &Settings{},

	p.Plugin = plugin.New(plugin.Options{
		Name:        "sample-plugin",
		Description: "Sample plugin",
		Flags:       p.Flags(),
		Execute:     p.Execute,