mirror of
https://codeberg.org/woodpecker-plugins/go-plugin.git
synced 2024-11-24 22:35:39 +01:00
72 lines
1.7 KiB
Markdown
72 lines
1.7 KiB
Markdown
|
# 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 |
|
||
|
|
||
|
## Creating plugin
|
||
|
|
||
|
```go
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"codeberg.org/woodpecker-plugins/go-plugin"
|
||
|
"github.com/urfave/cli/v2"
|
||
|
"github.com/rs/zerolog/log"
|
||
|
)
|
||
|
|
||
|
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",
|
||
|
EnvVars: []string{"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{}
|
||
|
}
|
||
|
|
||
|
p.Plugin = plugin.New(Options{
|
||
|
Name: "sample-plugin",
|
||
|
Description: "Sample plugin",
|
||
|
Flags: p.Flags(),
|
||
|
Execute: p.Execute,
|
||
|
})
|
||
|
|
||
|
p.Run()
|
||
|
}
|
||
|
```
|