mirror of
https://codeberg.org/woodpecker-plugins/go-plugin
synced 2026-06-04 10:14:59 +08:00
main
This PR was opened by the [ready-release-go](https://github.com/woodpecker-ci/plugin-ready-release-go) plugin. When you're ready to do a release, you can merge this pull-request and a new release with version `1.2.0` will be created automatically. If you're not ready to do a release yet, that's fine, whenever you add more changes to `main` this pull-request will be updated. ## Options - [ ] Mark this version as a release candidate ## [1.2.0](https://codeberg.org/woodpecker-plugins/go-plugin/releases/tag/v1.2.0) - 2026-05-30 ### ✨ Features - Support CI_STEP_NAME and CI_STEP_TYPE [[#88](https://codeberg.org/woodpecker-plugins/go-plugin/pulls/88)] ### 📦️ Dependency - fix(deps): update module golang.org/x/net to v0.55.0 [[#86](https://codeberg.org/woodpecker-plugins/go-plugin/pulls/86)] - fix(deps): update module golang.org/x/net to v0.54.0 [[#84](https://codeberg.org/woodpecker-plugins/go-plugin/pulls/84)] Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/85 Reviewed-by: 6543 <6543@obermui.de>
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 |
Skip verification of TLS certificate |
SOCKS_PROXY |
none | SOCKS5 proxy to use for connections | |
SOCKS_PROXY_OFF |
none | Do not use SOCKS5 proxy |
Optional: HTTP proxy support
HTTP proxy support is opt-in and must be explicitly enabled by the plugin author via EnableHTTPProxy: true in plugin.Options. When enabled, the following settings become available:
| Settings Name | Environment variable | Default | Description |
|---|---|---|---|
http_proxy |
HTTP_PROXY |
none | HTTP proxy URL for outgoing connections |
https_proxy |
HTTPS_PROXY |
none | HTTPS proxy URL for outgoing connections |
no_proxy |
NO_PROXY |
none | Comma-separated list of hosts to exclude from proxying |
The settings are resolved in the following order of precedence:
- Plugin settings —
PLUGIN_HTTP_PROXY,PLUGIN_HTTPS_PROXY,PLUGIN_NO_PROXY - Lowercase env vars —
http_proxy,https_proxy,no_proxy - Uppercase env vars —
HTTP_PROXY,HTTPS_PROXY,NO_PROXY
Example Woodpecker CI pipeline configuration:
steps:
- name: my-plugin
image: my-plugin:latest
settings:
http_proxy: http://proxy.example.com:3128
https_proxy: http://proxy.example.com:3128
no_proxy: "localhost,internal.example.com"
Creating plugin
package main
import (
"context"
"codeberg.org/woodpecker-plugins/go-plugin"
"github.com/rs/zerolog/log"
"github.com/urfave/cli/v3"
)
type Settings struct {
// TODO: Plugin settings
SampleFlag string
}
type Plugin struct {
*plugin.Plugin
Settings *Settings
}
func (p *Plugin) Flags() []cli.Flag {
return []cli.Flag{
// TODO: Add flags
&cli.StringFlag{
Name: "sample.flag",
Usage: "sample flag",
Sources: cli.EnvVars("PLUGIN_SAMPLE_FLAG"),
Destination: &p.Settings.SampleFlag,
},
}
}
func (p *Plugin) Execute(ctx context.Context) error {
// TODO: Implement execution
log.Debug().Msg("executed")
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,
EnableHTTPProxy: true, // opt-in to HTTP proxy support
})
p.Run()
}
Description
Languages
Go
97%
Makefile
2%
Nix
1%