go-plugin/README.md

74 lines
2.1 KiB
Markdown
Raw Normal View History

2023-01-08 03:53:03 +01:00
# 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](https://github.com/rs/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 |
2023-01-08 03:53:03 +01:00
## Creating plugin
```go
package main
2023-01-08 03:53:03 +01:00
import (
"context"
2023-01-08 03:53:03 +01:00
"codeberg.org/woodpecker-plugins/go-plugin"
"github.com/rs/zerolog/log"
"github.com/urfave/cli/v3"
2023-01-08 03:53:03 +01:00
)
type Settings struct {
// TODO: Plugin settings
SampleFlag string
2023-01-08 03:53:03 +01:00
}
type Plugin struct {
*plugin.Plugin
Settings *Settings
2023-01-08 03:53:03 +01:00
}
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,
},
}
2023-01-08 03:53:03 +01:00
}
func (p *Plugin) Execute(ctx context.Context) error {
// TODO: Implement execution
log.Debug().Msg("executed")
return nil
2023-01-08 03:53:03 +01:00
}
func main() {
p := &Plugin{
Settings: &Settings{},
}
p.Plugin = plugin.New(plugin.Options{
Name: "sample-plugin",
Description: "Sample plugin",
Flags: p.Flags(),
Execute: p.Execute,
})
2023-01-08 03:53:03 +01:00
p.Run()
2023-01-08 03:53:03 +01:00
}
```