mirror of
https://github.com/josmo/drone-rancher.git
synced 2026-06-04 10:15:29 +08:00
118 lines
2.8 KiB
Go
Executable File
118 lines
2.8 KiB
Go
Executable File
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
log "github.com/Sirupsen/logrus"
|
|
"github.com/urfave/cli"
|
|
)
|
|
|
|
var (
|
|
version = "0.0.0"
|
|
build = "0"
|
|
)
|
|
|
|
func main() {
|
|
app := cli.NewApp()
|
|
app.Name = "rancher publish"
|
|
app.Usage = "rancher publish"
|
|
app.Action = run
|
|
app.Version = fmt.Sprintf("%s+%s", version, build)
|
|
|
|
app.Flags = []cli.Flag{
|
|
|
|
cli.StringFlag{
|
|
Name: "url",
|
|
Usage: "url to the rancher api",
|
|
EnvVar: "PLUGIN_URL, RANCHER_URL",
|
|
},
|
|
cli.StringFlag{
|
|
Name: "access-key",
|
|
Usage: "rancher access key",
|
|
EnvVar: "PLUGIN_ACCESS_KEY, RANCHER_ACCESS_KEY",
|
|
},
|
|
cli.StringFlag{
|
|
Name: "secret-key",
|
|
Usage: "rancher secret key",
|
|
EnvVar: "PLUGIN_SECRET_KEY, RANCHER_SECRET_KEY",
|
|
},
|
|
cli.StringFlag{
|
|
Name: "service",
|
|
Usage: "Service to act on",
|
|
EnvVar: "PLUGIN_SERVICE",
|
|
},
|
|
cli.StringSliceFlag{
|
|
Name: "sidekick",
|
|
Usage: "Service's sidekick name and image separated by the space, supports multiple flags",
|
|
EnvVar: "PLUGIN_SIDEKICK",
|
|
},
|
|
cli.StringFlag{
|
|
Name: "docker-image",
|
|
Usage: "image to use",
|
|
EnvVar: "PLUGIN_DOCKER_IMAGE",
|
|
},
|
|
cli.BoolTFlag{
|
|
Name: "start-first",
|
|
Usage: "Start new container before stoping old",
|
|
EnvVar: "PLUGIN_START_FIRST",
|
|
},
|
|
cli.BoolFlag{
|
|
Name: "confirm",
|
|
Usage: "auto confirm the service upgrade if successful",
|
|
EnvVar: "PLUGIN_CONFIRM",
|
|
},
|
|
cli.IntFlag{
|
|
Name: "timeout",
|
|
Usage: "the maximum wait time in seconds for the service to upgrade",
|
|
Value: 30,
|
|
EnvVar: "PLUGIN_TIMEOUT",
|
|
},
|
|
cli.Int64Flag{
|
|
Name: "interval-millis",
|
|
Usage: "The interval for batch size upgrade",
|
|
Value: 1000,
|
|
EnvVar: "PLUGIN_INTERVAL_MILLIS",
|
|
},
|
|
cli.Int64Flag{
|
|
Name: "batch-size",
|
|
Usage: "The upgrade batch size",
|
|
Value: 1,
|
|
EnvVar: "PLUGIN_BATCH_SIZE",
|
|
},
|
|
cli.BoolTFlag{
|
|
Name: "yaml-verified",
|
|
Usage: "Ensure the yaml was signed",
|
|
EnvVar: "DRONE_YAML_VERIFIED",
|
|
},
|
|
cli.StringFlag{
|
|
Name: "environment",
|
|
Usage: "rancher environment to act on",
|
|
EnvVar: "PLUGIN_ENVIRONMENT",
|
|
},
|
|
}
|
|
|
|
if err := app.Run(os.Args); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func run(c *cli.Context) error {
|
|
plugin := Plugin{
|
|
URL: c.String("url"),
|
|
Key: c.String("access-key"),
|
|
Secret: c.String("secret-key"),
|
|
Service: c.String("service"),
|
|
SidekickDockerImage: c.StringSlice("sidekick"),
|
|
DockerImage: c.String("docker-image"),
|
|
StartFirst: c.BoolT("start-first"),
|
|
Confirm: c.Bool("confirm"),
|
|
Timeout: c.Int("timeout"),
|
|
IntervalMillis: c.Int64("interval-millis"),
|
|
BatchSize: c.Int64("batch-size"),
|
|
YamlVerified: c.BoolT("yaml-verified"),
|
|
Environment: c.String("environment"),
|
|
}
|
|
return plugin.Exec()
|
|
}
|