From 16bdc9fe12114737bed144da55b57359ef5846e8 Mon Sep 17 00:00:00 2001 From: Marian Steinbach Date: Mon, 31 May 2021 14:35:47 +0200 Subject: [PATCH] Move flag definitions into extra files (#215) --- cmd/drone-agent/flags.go | 104 ++++++++ cmd/drone-agent/main.go | 84 +------ cmd/drone-server/flags.go | 493 +++++++++++++++++++++++++++++++++++++ cmd/drone-server/server.go | 472 ----------------------------------- 4 files changed, 598 insertions(+), 555 deletions(-) create mode 100644 cmd/drone-agent/flags.go create mode 100644 cmd/drone-server/flags.go diff --git a/cmd/drone-agent/flags.go b/cmd/drone-agent/flags.go new file mode 100644 index 000000000..b1bca7feb --- /dev/null +++ b/cmd/drone-agent/flags.go @@ -0,0 +1,104 @@ +// Copyright 2019 Laszlo Fogas +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package main + +import ( + "time" + + "github.com/urfave/cli" +) + +var flags = []cli.Flag{ + cli.StringFlag{ + EnvVar: "DRONE_SERVER,WOODPECKER_SERVER", + Name: "server", + Usage: "drone server address", + Value: "localhost:9000", + }, + cli.StringFlag{ + EnvVar: "DRONE_USERNAME,WOODPECKER_USERNAME", + Name: "username", + Usage: "drone auth username", + Value: "x-oauth-basic", + }, + cli.StringFlag{ + EnvVar: "DRONE_PASSWORD,DRONE_SECRET,WOODPECKER_PASSWORD,WOODPECKER_SECRET", + Name: "password", + Usage: "server-agent shared password", + }, + cli.BoolTFlag{ + EnvVar: "DRONE_DEBUG,WOODPECKER_DEBUG", + Name: "debug", + Usage: "enable agent debug mode", + }, + cli.BoolFlag{ + EnvVar: "DRONE_DEBUG_PRETTY,WOODPECKER_DEBUG_PRETTY", + Name: "pretty", + Usage: "enable pretty-printed debug output", + }, + cli.BoolTFlag{ + EnvVar: "DRONE_DEBUG_NOCOLOR,WOODPECKER_DEBUG_NOCOLOR", + Name: "nocolor", + Usage: "disable colored debug output", + }, + cli.StringFlag{ + EnvVar: "DRONE_HOSTNAME,HOSTNAME,WOODPECKER_HOSTNAME,HOSTNAME", + Name: "hostname", + Usage: "agent hostname", + }, + cli.StringFlag{ + EnvVar: "DRONE_PLATFORM,WOODPECKER_PLATFORM", + Name: "platform", + Usage: "restrict builds by platform conditions", + Value: "linux/amd64", + }, + cli.StringFlag{ + EnvVar: "DRONE_FILTER,WOODPECKER_FILTER", + Name: "filter", + Usage: "filter expression to restrict builds by label", + }, + cli.IntFlag{ + EnvVar: "DRONE_MAX_PROCS,WOODPECKER_MAX_PROCS", + Name: "max-procs", + Usage: "agent parallel builds", + Value: 1, + }, + cli.BoolTFlag{ + EnvVar: "DRONE_HEALTHCHECK,WOODPECKER_HEALTHCHECK", + Name: "healthcheck", + Usage: "enable healthcheck endpoint", + }, + cli.DurationFlag{ + EnvVar: "DRONE_KEEPALIVE_TIME,WOODPECKER_KEEPALIVE_TIME", + Name: "keepalive-time", + Usage: "after a duration of this time of no activity, the agent pings the server to check if the transport is still alive", + }, + cli.DurationFlag{ + EnvVar: "DRONE_KEEPALIVE_TIMEOUT,WOODPECKER_KEEPALIVE_TIMEOUT", + Name: "keepalive-timeout", + Usage: "after pinging for a keepalive check, the agent waits for a duration of this time before closing the connection if no activity", + Value: time.Second * 20, + }, + cli.BoolFlag{ + Name: "secure-grpc", + Usage: "should the connection to DRONE_SERVER be made using a secure transport", + EnvVar: "DRONE_GRPC_SECURE,WOODPECKER_GRPC_SECURE", + }, + cli.BoolTFlag{ + Name: "skip-insecure-grpc", + Usage: "should the grpc server certificate be verified, only valid when DRONE_GRPC_SECURE is true", + EnvVar: "DRONE_GRPC_VERIFY,WOODPECKER_GRPC_VERIFY", + }, +} diff --git a/cmd/drone-agent/main.go b/cmd/drone-agent/main.go index 4e0531b87..c59c2f61a 100644 --- a/cmd/drone-agent/main.go +++ b/cmd/drone-agent/main.go @@ -17,7 +17,6 @@ package main import ( "fmt" "os" - "time" "github.com/woodpecker-ci/woodpecker/version" @@ -38,88 +37,7 @@ func main() { Action: pinger, }, } - app.Flags = []cli.Flag{ - cli.StringFlag{ - EnvVar: "DRONE_SERVER,WOODPECKER_SERVER", - Name: "server", - Usage: "drone server address", - Value: "localhost:9000", - }, - cli.StringFlag{ - EnvVar: "DRONE_USERNAME,WOODPECKER_USERNAME", - Name: "username", - Usage: "drone auth username", - Value: "x-oauth-basic", - }, - cli.StringFlag{ - EnvVar: "DRONE_PASSWORD,DRONE_SECRET,WOODPECKER_PASSWORD,WOODPECKER_SECRET", - Name: "password", - Usage: "server-agent shared password", - }, - cli.BoolTFlag{ - EnvVar: "DRONE_DEBUG,WOODPECKER_DEBUG", - Name: "debug", - Usage: "enable agent debug mode", - }, - cli.BoolFlag{ - EnvVar: "DRONE_DEBUG_PRETTY,WOODPECKER_DEBUG_PRETTY", - Name: "pretty", - Usage: "enable pretty-printed debug output", - }, - cli.BoolTFlag{ - EnvVar: "DRONE_DEBUG_NOCOLOR,WOODPECKER_DEBUG_NOCOLOR", - Name: "nocolor", - Usage: "disable colored debug output", - }, - cli.StringFlag{ - EnvVar: "DRONE_HOSTNAME,HOSTNAME,WOODPECKER_HOSTNAME,HOSTNAME", - Name: "hostname", - Usage: "agent hostname", - }, - cli.StringFlag{ - EnvVar: "DRONE_PLATFORM,WOODPECKER_PLATFORM", - Name: "platform", - Usage: "restrict builds by platform conditions", - Value: "linux/amd64", - }, - cli.StringFlag{ - EnvVar: "DRONE_FILTER,WOODPECKER_FILTER", - Name: "filter", - Usage: "filter expression to restrict builds by label", - }, - cli.IntFlag{ - EnvVar: "DRONE_MAX_PROCS,WOODPECKER_MAX_PROCS", - Name: "max-procs", - Usage: "agent parallel builds", - Value: 1, - }, - cli.BoolTFlag{ - EnvVar: "DRONE_HEALTHCHECK,WOODPECKER_HEALTHCHECK", - Name: "healthcheck", - Usage: "enable healthcheck endpoint", - }, - cli.DurationFlag{ - EnvVar: "DRONE_KEEPALIVE_TIME,WOODPECKER_KEEPALIVE_TIME", - Name: "keepalive-time", - Usage: "after a duration of this time of no activity, the agent pings the server to check if the transport is still alive", - }, - cli.DurationFlag{ - EnvVar: "DRONE_KEEPALIVE_TIMEOUT,WOODPECKER_KEEPALIVE_TIMEOUT", - Name: "keepalive-timeout", - Usage: "after pinging for a keepalive check, the agent waits for a duration of this time before closing the connection if no activity", - Value: time.Second * 20, - }, - cli.BoolFlag{ - Name: "secure-grpc", - Usage: "should the connection to DRONE_SERVER be made using a secure transport", - EnvVar: "DRONE_GRPC_SECURE,WOODPECKER_GRPC_SECURE", - }, - cli.BoolTFlag{ - Name: "skip-insecure-grpc", - Usage: "should the grpc server certificate be verified, only valid when DRONE_GRPC_SECURE is true", - EnvVar: "DRONE_GRPC_VERIFY,WOODPECKER_GRPC_VERIFY", - }, - } + app.Flags = flags if err := app.Run(os.Args); err != nil { fmt.Fprintln(os.Stderr, err) diff --git a/cmd/drone-server/flags.go b/cmd/drone-server/flags.go new file mode 100644 index 000000000..127586e2f --- /dev/null +++ b/cmd/drone-server/flags.go @@ -0,0 +1,493 @@ +// Copyright 2019 Laszlo Fogas +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package main + +import ( + "time" + + "github.com/urfave/cli" +) + +var flags = []cli.Flag{ + cli.BoolFlag{ + EnvVar: "DRONE_DEBUG,WOODPECKER_DEBUG", + Name: "debug", + Usage: "enable server debug mode", + }, + cli.StringFlag{ + EnvVar: "DRONE_SERVER_HOST,DRONE_HOST,WOODPECKER_SERVER_HOST,WOODPECKER_HOST", + Name: "server-host", + Usage: "server fully qualified url (://)", + }, + cli.StringFlag{ + EnvVar: "DRONE_SERVER_ADDR,WOODPECKER_SERVER_ADDR", + Name: "server-addr", + Usage: "server address", + Value: ":8000", + }, + cli.StringFlag{ + EnvVar: "DRONE_SERVER_CERT,WOODPECKER_SERVER_CERT", + Name: "server-cert", + Usage: "server ssl cert path", + }, + cli.StringFlag{ + EnvVar: "DRONE_SERVER_KEY,WOODPECKER_SERVER_KEY", + Name: "server-key", + Usage: "server ssl key path", + }, + cli.BoolFlag{ + EnvVar: "DRONE_LETS_ENCRYPT,WOODPECKER_LETS_ENCRYPT", + Name: "lets-encrypt", + Usage: "enable let's encrypt", + }, + cli.BoolFlag{ + EnvVar: "DRONE_QUIC,WOODPECKER_QUIC", + Name: "quic", + Usage: "enable quic", + }, + cli.StringFlag{ + EnvVar: "DRONE_WWW,WOODPECKER_WWW", + Name: "www", + Usage: "serve the website from disk", + Hidden: true, + }, + cli.StringSliceFlag{ + EnvVar: "DRONE_ADMIN,WOODPECKER_ADMIN", + Name: "admin", + Usage: "list of admin users", + }, + cli.StringSliceFlag{ + EnvVar: "DRONE_ORGS,WOODPECKER_ORGS", + Name: "orgs", + Usage: "list of approved organizations", + }, + cli.StringSliceFlag{ + EnvVar: "DRONE_REPO_OWNERS,WOODPECKER_REPO_OWNERS", + Name: "repo-owners", + Usage: "List of syncable repo owners", + }, + cli.BoolFlag{ + EnvVar: "DRONE_OPEN,WOODPECKER_OPEN", + Name: "open", + Usage: "enable open user registration", + }, + cli.StringFlag{ + EnvVar: "DRONE_REPO_CONFIG,WOODPECKER_REPO_CONFIG", + Name: "repo-config", + Usage: "file path for the drone config", + Value: ".drone.yml", + }, + cli.StringFlag{ + EnvVar: "DRONE_DOCS,WOODPECKER_DOCS", + Name: "docs", + Usage: "link to user documentation", + Value: "https://woodpecker.laszlo.cloud", + }, + cli.DurationFlag{ + EnvVar: "DRONE_SESSION_EXPIRES,WOODPECKER_SESSION_EXPIRES", + Name: "session-expires", + Usage: "session expiration time", + Value: time.Hour * 72, + }, + cli.StringSliceFlag{ + EnvVar: "DRONE_ESCALATE,WOODPECKER_ESCALATE", + Name: "escalate", + Usage: "images to run in privileged mode", + Value: &cli.StringSlice{ + "plugins/docker", + "plugins/gcr", + "plugins/ecr", + }, + }, + cli.StringSliceFlag{ + EnvVar: "DRONE_VOLUME,WOODPECKER_VOLUME", + Name: "volume", + }, + cli.StringFlag{ + EnvVar: "DRONE_DOCKER_CONFIG,WOODPECKER_DOCKER_CONFIG", + Name: "docker-config", + }, + cli.StringSliceFlag{ + EnvVar: "DRONE_ENVIRONMENT,WOODPECKER_ENVIRONMENT", + Name: "environment", + }, + cli.StringSliceFlag{ + EnvVar: "DRONE_NETWORK,WOODPECKER_NETWORK", + Name: "network", + }, + cli.StringFlag{ + EnvVar: "DRONE_AGENT_SECRET,DRONE_SECRET,WOODPECKER_AGENT_SECRET,WOODPECKER_SECRET", + Name: "agent-secret", + Usage: "server-agent shared password", + }, + cli.StringFlag{ + EnvVar: "DRONE_SECRET_ENDPOINT,WOODPECKER_SECRET_ENDPOINT", + Name: "secret-service", + Usage: "secret plugin endpoint", + }, + cli.StringFlag{ + EnvVar: "DRONE_REGISTRY_ENDPOINT,WOODPECKER_REGISTRY_ENDPOINT", + Name: "registry-service", + Usage: "registry plugin endpoint", + }, + cli.StringFlag{ + EnvVar: "DRONE_GATEKEEPER_ENDPOINT,WOODPECKER_GATEKEEPER_ENDPOINT", + Name: "gating-service", + Usage: "gated build endpoint", + }, + cli.StringFlag{ + EnvVar: "DRONE_DATABASE_DRIVER,DATABASE_DRIVER,WOODPECKER_DATABASE_DRIVER,DATABASE_DRIVER", + Name: "driver", + Usage: "database driver", + Value: "sqlite3", + }, + cli.StringFlag{ + EnvVar: "DRONE_DATABASE_DATASOURCE,DATABASE_CONFIG,WOODPECKER_DATABASE_DATASOURCE,DATABASE_CONFIG", + Name: "datasource", + Usage: "database driver configuration string", + Value: "drone.sqlite", + }, + cli.StringFlag{ + EnvVar: "DRONE_PROMETHEUS_AUTH_TOKEN,WOODPECKER_PROMETHEUS_AUTH_TOKEN", + Name: "prometheus-auth-token", + Usage: "token to secure prometheus metrics endpoint", + Value: "", + }, + // + // resource limit parameters + // + cli.Int64Flag{ + EnvVar: "DRONE_LIMIT_MEM_SWAP,WOODPECKER_LIMIT_MEM_SWAP", + Name: "limit-mem-swap", + Usage: "maximum swappable memory allowed in bytes", + }, + cli.Int64Flag{ + EnvVar: "DRONE_LIMIT_MEM,WOODPECKER_LIMIT_MEM", + Name: "limit-mem", + Usage: "maximum memory allowed in bytes", + }, + cli.Int64Flag{ + EnvVar: "DRONE_LIMIT_SHM_SIZE,WOODPECKER_LIMIT_SHM_SIZE", + Name: "limit-shm-size", + Usage: "docker compose /dev/shm allowed in bytes", + }, + cli.Int64Flag{ + EnvVar: "DRONE_LIMIT_CPU_QUOTA,WOODPECKER_LIMIT_CPU_QUOTA", + Name: "limit-cpu-quota", + Usage: "impose a cpu quota", + }, + cli.Int64Flag{ + EnvVar: "DRONE_LIMIT_CPU_SHARES,WOODPECKER_LIMIT_CPU_SHARES", + Name: "limit-cpu-shares", + Usage: "change the cpu shares", + }, + cli.StringFlag{ + EnvVar: "DRONE_LIMIT_CPU_SET,WOODPECKER_LIMIT_CPU_SET", + Name: "limit-cpu-set", + Usage: "set the cpus allowed to execute containers", + }, + // + // remote parameters + // + cli.BoolFlag{ + EnvVar: "DRONE_GITHUB,WOODPECKER_GITHUB", + Name: "github", + Usage: "github driver is enabled", + }, + cli.StringFlag{ + EnvVar: "DRONE_GITHUB_URL,WOODPECKER_GITHUB_URL", + Name: "github-server", + Usage: "github server address", + Value: "https://github.com", + }, + cli.StringFlag{ + EnvVar: "DRONE_GITHUB_CONTEXT,WOODPECKER_GITHUB_CONTEXT", + Name: "github-context", + Usage: "github status context", + Value: "continuous-integration/drone", + }, + cli.StringFlag{ + EnvVar: "DRONE_GITHUB_CLIENT,WOODPECKER_GITHUB_CLIENT", + Name: "github-client", + Usage: "github oauth2 client id", + }, + cli.StringFlag{ + EnvVar: "DRONE_GITHUB_SECRET,WOODPECKER_GITHUB_SECRET", + Name: "github-secret", + Usage: "github oauth2 client secret", + }, + cli.StringSliceFlag{ + EnvVar: "DRONE_GITHUB_SCOPE,WOODPECKER_GITHUB_SCOPE", + Name: "github-scope", + Usage: "github oauth scope", + Value: &cli.StringSlice{ + "repo", + "repo:status", + "user:email", + "read:org", + }, + }, + cli.StringFlag{ + EnvVar: "DRONE_GITHUB_GIT_USERNAME,WOODPECKER_GITHUB_GIT_USERNAME", + Name: "github-git-username", + Usage: "github machine user username", + }, + cli.StringFlag{ + EnvVar: "DRONE_GITHUB_GIT_PASSWORD,WOODPECKER_GITHUB_GIT_PASSWORD", + Name: "github-git-password", + Usage: "github machine user password", + }, + cli.BoolTFlag{ + EnvVar: "DRONE_GITHUB_MERGE_REF,WOODPECKER_GITHUB_MERGE_REF", + Name: "github-merge-ref", + Usage: "github pull requests use merge ref", + }, + cli.BoolFlag{ + EnvVar: "DRONE_GITHUB_PRIVATE_MODE,WOODPECKER_GITHUB_PRIVATE_MODE", + Name: "github-private-mode", + Usage: "github is running in private mode", + }, + cli.BoolFlag{ + EnvVar: "DRONE_GITHUB_SKIP_VERIFY,WOODPECKER_GITHUB_SKIP_VERIFY", + Name: "github-skip-verify", + Usage: "github skip ssl verification", + }, + cli.BoolFlag{ + EnvVar: "DRONE_GOGS,WOODPECKER_GOGS", + Name: "gogs", + Usage: "gogs driver is enabled", + }, + cli.StringFlag{ + EnvVar: "DRONE_GOGS_URL,WOODPECKER_GOGS_URL", + Name: "gogs-server", + Usage: "gogs server address", + Value: "https://github.com", + }, + cli.StringFlag{ + EnvVar: "DRONE_GOGS_GIT_USERNAME,WOODPECKER_GOGS_GIT_USERNAME", + Name: "gogs-git-username", + Usage: "gogs service account username", + }, + cli.StringFlag{ + EnvVar: "DRONE_GOGS_GIT_PASSWORD,WOODPECKER_GOGS_GIT_PASSWORD", + Name: "gogs-git-password", + Usage: "gogs service account password", + }, + cli.BoolFlag{ + EnvVar: "DRONE_GOGS_PRIVATE_MODE,WOODPECKER_GOGS_PRIVATE_MODE", + Name: "gogs-private-mode", + Usage: "gogs private mode enabled", + }, + cli.BoolFlag{ + EnvVar: "DRONE_GOGS_SKIP_VERIFY,WOODPECKER_GOGS_SKIP_VERIFY", + Name: "gogs-skip-verify", + Usage: "gogs skip ssl verification", + }, + cli.BoolFlag{ + EnvVar: "DRONE_GITEA,WOODPECKER_GITEA", + Name: "gitea", + Usage: "gitea driver is enabled", + }, + cli.StringFlag{ + EnvVar: "DRONE_GITEA_URL,WOODPECKER_GITEA_URL", + Name: "gitea-server", + Usage: "gitea server address", + Value: "https://try.gitea.io", + }, + cli.StringFlag{ + EnvVar: "DRONE_GITEA_CONTEXT,WOODPECKER_GITEA_CONTEXT", + Name: "gitea-context", + Usage: "gitea status context", + Value: "continuous-integration/drone", + }, + cli.StringFlag{ + EnvVar: "DRONE_GITEA_GIT_USERNAME,WOODPECKER_GITEA_GIT_USERNAME", + Name: "gitea-git-username", + Usage: "gitea service account username", + }, + cli.StringFlag{ + EnvVar: "DRONE_GITEA_GIT_PASSWORD,WOODPECKER_GITEA_GIT_PASSWORD", + Name: "gitea-git-password", + Usage: "gitea service account password", + }, + cli.BoolFlag{ + EnvVar: "DRONE_GITEA_PRIVATE_MODE,WOODPECKER_GITEA_PRIVATE_MODE", + Name: "gitea-private-mode", + Usage: "gitea private mode enabled", + }, + cli.BoolFlag{ + EnvVar: "DRONE_GITEA_SKIP_VERIFY,WOODPECKER_GITEA_SKIP_VERIFY", + Name: "gitea-skip-verify", + Usage: "gitea skip ssl verification", + }, + cli.BoolFlag{ + EnvVar: "DRONE_BITBUCKET,WOODPECKER_BITBUCKET", + Name: "bitbucket", + Usage: "bitbucket driver is enabled", + }, + cli.StringFlag{ + EnvVar: "DRONE_BITBUCKET_CLIENT,WOODPECKER_BITBUCKET_CLIENT", + Name: "bitbucket-client", + Usage: "bitbucket oauth2 client id", + }, + cli.StringFlag{ + EnvVar: "DRONE_BITBUCKET_SECRET,WOODPECKER_BITBUCKET_SECRET", + Name: "bitbucket-secret", + Usage: "bitbucket oauth2 client secret", + }, + cli.BoolFlag{ + EnvVar: "DRONE_GITLAB,WOODPECKER_GITLAB", + Name: "gitlab", + Usage: "gitlab driver is enabled", + }, + cli.StringFlag{ + EnvVar: "DRONE_GITLAB_URL,WOODPECKER_GITLAB_URL", + Name: "gitlab-server", + Usage: "gitlab server address", + Value: "https://gitlab.com", + }, + cli.StringFlag{ + EnvVar: "DRONE_GITLAB_CLIENT,WOODPECKER_GITLAB_CLIENT", + Name: "gitlab-client", + Usage: "gitlab oauth2 client id", + }, + cli.StringFlag{ + EnvVar: "DRONE_GITLAB_SECRET,WOODPECKER_GITLAB_SECRET", + Name: "gitlab-secret", + Usage: "gitlab oauth2 client secret", + }, + cli.StringFlag{ + EnvVar: "DRONE_GITLAB_GIT_USERNAME,WOODPECKER_GITLAB_GIT_USERNAME", + Name: "gitlab-git-username", + Usage: "gitlab service account username", + }, + cli.StringFlag{ + EnvVar: "DRONE_GITLAB_GIT_PASSWORD,WOODPECKER_GITLAB_GIT_PASSWORD", + Name: "gitlab-git-password", + Usage: "gitlab service account password", + }, + cli.BoolFlag{ + EnvVar: "DRONE_GITLAB_SKIP_VERIFY,WOODPECKER_GITLAB_SKIP_VERIFY", + Name: "gitlab-skip-verify", + Usage: "gitlab skip ssl verification", + }, + cli.BoolFlag{ + EnvVar: "DRONE_GITLAB_PRIVATE_MODE,WOODPECKER_GITLAB_PRIVATE_MODE", + Name: "gitlab-private-mode", + Usage: "gitlab is running in private mode", + }, + cli.BoolFlag{ + EnvVar: "DRONE_GITLAB_V3_API,WOODPECKER_GITLAB_V3_API", + Name: "gitlab-v3-api", + Usage: "gitlab is running the v3 api", + }, + cli.BoolFlag{ + EnvVar: "DRONE_STASH,WOODPECKER_STASH", + Name: "stash", + Usage: "stash driver is enabled", + }, + cli.StringFlag{ + EnvVar: "DRONE_STASH_URL,WOODPECKER_STASH_URL", + Name: "stash-server", + Usage: "stash server address", + }, + cli.StringFlag{ + EnvVar: "DRONE_STASH_CONSUMER_KEY,WOODPECKER_STASH_CONSUMER_KEY", + Name: "stash-consumer-key", + Usage: "stash oauth1 consumer key", + }, + cli.StringFlag{ + EnvVar: "DRONE_STASH_CONSUMER_RSA,WOODPECKER_STASH_CONSUMER_RSA", + Name: "stash-consumer-rsa", + Usage: "stash oauth1 private key file", + }, + cli.StringFlag{ + EnvVar: "DRONE_STASH_CONSUMER_RSA_STRING,WOODPECKER_STASH_CONSUMER_RSA_STRING", + Name: "stash-consumer-rsa-string", + Usage: "stash oauth1 private key string", + }, + cli.StringFlag{ + EnvVar: "DRONE_STASH_GIT_USERNAME,WOODPECKER_STASH_GIT_USERNAME", + Name: "stash-git-username", + Usage: "stash service account username", + }, + cli.StringFlag{ + EnvVar: "DRONE_STASH_GIT_PASSWORD,WOODPECKER_STASH_GIT_PASSWORD", + Name: "stash-git-password", + Usage: "stash service account password", + }, + cli.BoolFlag{ + EnvVar: "DRONE_STASH_SKIP_VERIFY,WOODPECKER_STASH_SKIP_VERIFY", + Name: "stash-skip-verify", + Usage: "stash skip ssl verification", + }, + cli.BoolFlag{ + EnvVar: "DRONE_CODING,WOODPECKER_CODING", + Name: "coding", + Usage: "coding driver is enabled", + }, + cli.StringFlag{ + EnvVar: "DRONE_CODING_URL,WOODPECKER_CODING_URL", + Name: "coding-server", + Usage: "coding server address", + Value: "https://coding.net", + }, + cli.StringFlag{ + EnvVar: "DRONE_CODING_CLIENT,WOODPECKER_CODING_CLIENT", + Name: "coding-client", + Usage: "coding oauth2 client id", + }, + cli.StringFlag{ + EnvVar: "DRONE_CODING_SECRET,WOODPECKER_CODING_SECRET", + Name: "coding-secret", + Usage: "coding oauth2 client secret", + }, + cli.StringSliceFlag{ + EnvVar: "DRONE_CODING_SCOPE,WOODPECKER_CODING_SCOPE", + Name: "coding-scope", + Usage: "coding oauth scope", + Value: &cli.StringSlice{ + "user", + "project", + "project:depot", + }, + }, + cli.StringFlag{ + EnvVar: "DRONE_CODING_GIT_MACHINE,WOODPECKER_CODING_GIT_MACHINE", + Name: "coding-git-machine", + Usage: "coding machine name", + Value: "git.coding.net", + }, + cli.StringFlag{ + EnvVar: "DRONE_CODING_GIT_USERNAME,WOODPECKER_CODING_GIT_USERNAME", + Name: "coding-git-username", + Usage: "coding machine user username", + }, + cli.StringFlag{ + EnvVar: "DRONE_CODING_GIT_PASSWORD,WOODPECKER_CODING_GIT_PASSWORD", + Name: "coding-git-password", + Usage: "coding machine user password", + }, + cli.BoolFlag{ + EnvVar: "DRONE_CODING_SKIP_VERIFY,WOODPECKER_CODING_SKIP_VERIFY", + Name: "coding-skip-verify", + Usage: "coding skip ssl verification", + }, + cli.DurationFlag{ + EnvVar: "DRONE_KEEPALIVE_MIN_TIME,WOODPECKER_KEEPALIVE_MIN_TIME", + Name: "keepalive-min-time", + Usage: "server-side enforcement policy on the minimum amount of time a client should wait before sending a keepalive ping.", + }, +} diff --git a/cmd/drone-server/server.go b/cmd/drone-server/server.go index c371f39e1..8c909e059 100644 --- a/cmd/drone-server/server.go +++ b/cmd/drone-server/server.go @@ -49,478 +49,6 @@ import ( oldcontext "golang.org/x/net/context" ) -var flags = []cli.Flag{ - cli.BoolFlag{ - EnvVar: "DRONE_DEBUG,WOODPECKER_DEBUG", - Name: "debug", - Usage: "enable server debug mode", - }, - cli.StringFlag{ - EnvVar: "DRONE_SERVER_HOST,DRONE_HOST,WOODPECKER_SERVER_HOST,WOODPECKER_HOST", - Name: "server-host", - Usage: "server fully qualified url (://)", - }, - cli.StringFlag{ - EnvVar: "DRONE_SERVER_ADDR,WOODPECKER_SERVER_ADDR", - Name: "server-addr", - Usage: "server address", - Value: ":8000", - }, - cli.StringFlag{ - EnvVar: "DRONE_SERVER_CERT,WOODPECKER_SERVER_CERT", - Name: "server-cert", - Usage: "server ssl cert path", - }, - cli.StringFlag{ - EnvVar: "DRONE_SERVER_KEY,WOODPECKER_SERVER_KEY", - Name: "server-key", - Usage: "server ssl key path", - }, - cli.BoolFlag{ - EnvVar: "DRONE_LETS_ENCRYPT,WOODPECKER_LETS_ENCRYPT", - Name: "lets-encrypt", - Usage: "enable let's encrypt", - }, - cli.BoolFlag{ - EnvVar: "DRONE_QUIC,WOODPECKER_QUIC", - Name: "quic", - Usage: "enable quic", - }, - cli.StringFlag{ - EnvVar: "DRONE_WWW,WOODPECKER_WWW", - Name: "www", - Usage: "serve the website from disk", - Hidden: true, - }, - cli.StringSliceFlag{ - EnvVar: "DRONE_ADMIN,WOODPECKER_ADMIN", - Name: "admin", - Usage: "list of admin users", - }, - cli.StringSliceFlag{ - EnvVar: "DRONE_ORGS,WOODPECKER_ORGS", - Name: "orgs", - Usage: "list of approved organizations", - }, - cli.StringSliceFlag{ - EnvVar: "DRONE_REPO_OWNERS,WOODPECKER_REPO_OWNERS", - Name: "repo-owners", - Usage: "List of syncable repo owners", - }, - cli.BoolFlag{ - EnvVar: "DRONE_OPEN,WOODPECKER_OPEN", - Name: "open", - Usage: "enable open user registration", - }, - cli.StringFlag{ - EnvVar: "DRONE_REPO_CONFIG,WOODPECKER_REPO_CONFIG", - Name: "repo-config", - Usage: "file path for the drone config", - Value: ".drone.yml", - }, - cli.StringFlag{ - EnvVar: "DRONE_DOCS,WOODPECKER_DOCS", - Name: "docs", - Usage: "link to user documentation", - Value: "https://woodpecker.laszlo.cloud", - }, - cli.DurationFlag{ - EnvVar: "DRONE_SESSION_EXPIRES,WOODPECKER_SESSION_EXPIRES", - Name: "session-expires", - Usage: "session expiration time", - Value: time.Hour * 72, - }, - cli.StringSliceFlag{ - EnvVar: "DRONE_ESCALATE,WOODPECKER_ESCALATE", - Name: "escalate", - Usage: "images to run in privileged mode", - Value: &cli.StringSlice{ - "plugins/docker", - "plugins/gcr", - "plugins/ecr", - }, - }, - cli.StringSliceFlag{ - EnvVar: "DRONE_VOLUME,WOODPECKER_VOLUME", - Name: "volume", - }, - cli.StringFlag{ - EnvVar: "DRONE_DOCKER_CONFIG,WOODPECKER_DOCKER_CONFIG", - Name: "docker-config", - }, - cli.StringSliceFlag{ - EnvVar: "DRONE_ENVIRONMENT,WOODPECKER_ENVIRONMENT", - Name: "environment", - }, - cli.StringSliceFlag{ - EnvVar: "DRONE_NETWORK,WOODPECKER_NETWORK", - Name: "network", - }, - cli.StringFlag{ - EnvVar: "DRONE_AGENT_SECRET,DRONE_SECRET,WOODPECKER_AGENT_SECRET,WOODPECKER_SECRET", - Name: "agent-secret", - Usage: "server-agent shared password", - }, - cli.StringFlag{ - EnvVar: "DRONE_SECRET_ENDPOINT,WOODPECKER_SECRET_ENDPOINT", - Name: "secret-service", - Usage: "secret plugin endpoint", - }, - cli.StringFlag{ - EnvVar: "DRONE_REGISTRY_ENDPOINT,WOODPECKER_REGISTRY_ENDPOINT", - Name: "registry-service", - Usage: "registry plugin endpoint", - }, - cli.StringFlag{ - EnvVar: "DRONE_GATEKEEPER_ENDPOINT,WOODPECKER_GATEKEEPER_ENDPOINT", - Name: "gating-service", - Usage: "gated build endpoint", - }, - cli.StringFlag{ - EnvVar: "DRONE_DATABASE_DRIVER,DATABASE_DRIVER,WOODPECKER_DATABASE_DRIVER,DATABASE_DRIVER", - Name: "driver", - Usage: "database driver", - Value: "sqlite3", - }, - cli.StringFlag{ - EnvVar: "DRONE_DATABASE_DATASOURCE,DATABASE_CONFIG,WOODPECKER_DATABASE_DATASOURCE,DATABASE_CONFIG", - Name: "datasource", - Usage: "database driver configuration string", - Value: "drone.sqlite", - }, - cli.StringFlag{ - EnvVar: "DRONE_PROMETHEUS_AUTH_TOKEN,WOODPECKER_PROMETHEUS_AUTH_TOKEN", - Name: "prometheus-auth-token", - Usage: "token to secure prometheus metrics endpoint", - Value: "", - }, - // - // resource limit parameters - // - cli.Int64Flag{ - EnvVar: "DRONE_LIMIT_MEM_SWAP,WOODPECKER_LIMIT_MEM_SWAP", - Name: "limit-mem-swap", - Usage: "maximum swappable memory allowed in bytes", - }, - cli.Int64Flag{ - EnvVar: "DRONE_LIMIT_MEM,WOODPECKER_LIMIT_MEM", - Name: "limit-mem", - Usage: "maximum memory allowed in bytes", - }, - cli.Int64Flag{ - EnvVar: "DRONE_LIMIT_SHM_SIZE,WOODPECKER_LIMIT_SHM_SIZE", - Name: "limit-shm-size", - Usage: "docker compose /dev/shm allowed in bytes", - }, - cli.Int64Flag{ - EnvVar: "DRONE_LIMIT_CPU_QUOTA,WOODPECKER_LIMIT_CPU_QUOTA", - Name: "limit-cpu-quota", - Usage: "impose a cpu quota", - }, - cli.Int64Flag{ - EnvVar: "DRONE_LIMIT_CPU_SHARES,WOODPECKER_LIMIT_CPU_SHARES", - Name: "limit-cpu-shares", - Usage: "change the cpu shares", - }, - cli.StringFlag{ - EnvVar: "DRONE_LIMIT_CPU_SET,WOODPECKER_LIMIT_CPU_SET", - Name: "limit-cpu-set", - Usage: "set the cpus allowed to execute containers", - }, - // - // remote parameters - // - cli.BoolFlag{ - EnvVar: "DRONE_GITHUB,WOODPECKER_GITHUB", - Name: "github", - Usage: "github driver is enabled", - }, - cli.StringFlag{ - EnvVar: "DRONE_GITHUB_URL,WOODPECKER_GITHUB_URL", - Name: "github-server", - Usage: "github server address", - Value: "https://github.com", - }, - cli.StringFlag{ - EnvVar: "DRONE_GITHUB_CONTEXT,WOODPECKER_GITHUB_CONTEXT", - Name: "github-context", - Usage: "github status context", - Value: "continuous-integration/drone", - }, - cli.StringFlag{ - EnvVar: "DRONE_GITHUB_CLIENT,WOODPECKER_GITHUB_CLIENT", - Name: "github-client", - Usage: "github oauth2 client id", - }, - cli.StringFlag{ - EnvVar: "DRONE_GITHUB_SECRET,WOODPECKER_GITHUB_SECRET", - Name: "github-secret", - Usage: "github oauth2 client secret", - }, - cli.StringSliceFlag{ - EnvVar: "DRONE_GITHUB_SCOPE,WOODPECKER_GITHUB_SCOPE", - Name: "github-scope", - Usage: "github oauth scope", - Value: &cli.StringSlice{ - "repo", - "repo:status", - "user:email", - "read:org", - }, - }, - cli.StringFlag{ - EnvVar: "DRONE_GITHUB_GIT_USERNAME,WOODPECKER_GITHUB_GIT_USERNAME", - Name: "github-git-username", - Usage: "github machine user username", - }, - cli.StringFlag{ - EnvVar: "DRONE_GITHUB_GIT_PASSWORD,WOODPECKER_GITHUB_GIT_PASSWORD", - Name: "github-git-password", - Usage: "github machine user password", - }, - cli.BoolTFlag{ - EnvVar: "DRONE_GITHUB_MERGE_REF,WOODPECKER_GITHUB_MERGE_REF", - Name: "github-merge-ref", - Usage: "github pull requests use merge ref", - }, - cli.BoolFlag{ - EnvVar: "DRONE_GITHUB_PRIVATE_MODE,WOODPECKER_GITHUB_PRIVATE_MODE", - Name: "github-private-mode", - Usage: "github is running in private mode", - }, - cli.BoolFlag{ - EnvVar: "DRONE_GITHUB_SKIP_VERIFY,WOODPECKER_GITHUB_SKIP_VERIFY", - Name: "github-skip-verify", - Usage: "github skip ssl verification", - }, - cli.BoolFlag{ - EnvVar: "DRONE_GOGS,WOODPECKER_GOGS", - Name: "gogs", - Usage: "gogs driver is enabled", - }, - cli.StringFlag{ - EnvVar: "DRONE_GOGS_URL,WOODPECKER_GOGS_URL", - Name: "gogs-server", - Usage: "gogs server address", - Value: "https://github.com", - }, - cli.StringFlag{ - EnvVar: "DRONE_GOGS_GIT_USERNAME,WOODPECKER_GOGS_GIT_USERNAME", - Name: "gogs-git-username", - Usage: "gogs service account username", - }, - cli.StringFlag{ - EnvVar: "DRONE_GOGS_GIT_PASSWORD,WOODPECKER_GOGS_GIT_PASSWORD", - Name: "gogs-git-password", - Usage: "gogs service account password", - }, - cli.BoolFlag{ - EnvVar: "DRONE_GOGS_PRIVATE_MODE,WOODPECKER_GOGS_PRIVATE_MODE", - Name: "gogs-private-mode", - Usage: "gogs private mode enabled", - }, - cli.BoolFlag{ - EnvVar: "DRONE_GOGS_SKIP_VERIFY,WOODPECKER_GOGS_SKIP_VERIFY", - Name: "gogs-skip-verify", - Usage: "gogs skip ssl verification", - }, - cli.BoolFlag{ - EnvVar: "DRONE_GITEA,WOODPECKER_GITEA", - Name: "gitea", - Usage: "gitea driver is enabled", - }, - cli.StringFlag{ - EnvVar: "DRONE_GITEA_URL,WOODPECKER_GITEA_URL", - Name: "gitea-server", - Usage: "gitea server address", - Value: "https://try.gitea.io", - }, - cli.StringFlag{ - EnvVar: "DRONE_GITEA_CONTEXT,WOODPECKER_GITEA_CONTEXT", - Name: "gitea-context", - Usage: "gitea status context", - Value: "continuous-integration/drone", - }, - cli.StringFlag{ - EnvVar: "DRONE_GITEA_GIT_USERNAME,WOODPECKER_GITEA_GIT_USERNAME", - Name: "gitea-git-username", - Usage: "gitea service account username", - }, - cli.StringFlag{ - EnvVar: "DRONE_GITEA_GIT_PASSWORD,WOODPECKER_GITEA_GIT_PASSWORD", - Name: "gitea-git-password", - Usage: "gitea service account password", - }, - cli.BoolFlag{ - EnvVar: "DRONE_GITEA_PRIVATE_MODE,WOODPECKER_GITEA_PRIVATE_MODE", - Name: "gitea-private-mode", - Usage: "gitea private mode enabled", - }, - cli.BoolFlag{ - EnvVar: "DRONE_GITEA_SKIP_VERIFY,WOODPECKER_GITEA_SKIP_VERIFY", - Name: "gitea-skip-verify", - Usage: "gitea skip ssl verification", - }, - cli.BoolFlag{ - EnvVar: "DRONE_BITBUCKET,WOODPECKER_BITBUCKET", - Name: "bitbucket", - Usage: "bitbucket driver is enabled", - }, - cli.StringFlag{ - EnvVar: "DRONE_BITBUCKET_CLIENT,WOODPECKER_BITBUCKET_CLIENT", - Name: "bitbucket-client", - Usage: "bitbucket oauth2 client id", - }, - cli.StringFlag{ - EnvVar: "DRONE_BITBUCKET_SECRET,WOODPECKER_BITBUCKET_SECRET", - Name: "bitbucket-secret", - Usage: "bitbucket oauth2 client secret", - }, - cli.BoolFlag{ - EnvVar: "DRONE_GITLAB,WOODPECKER_GITLAB", - Name: "gitlab", - Usage: "gitlab driver is enabled", - }, - cli.StringFlag{ - EnvVar: "DRONE_GITLAB_URL,WOODPECKER_GITLAB_URL", - Name: "gitlab-server", - Usage: "gitlab server address", - Value: "https://gitlab.com", - }, - cli.StringFlag{ - EnvVar: "DRONE_GITLAB_CLIENT,WOODPECKER_GITLAB_CLIENT", - Name: "gitlab-client", - Usage: "gitlab oauth2 client id", - }, - cli.StringFlag{ - EnvVar: "DRONE_GITLAB_SECRET,WOODPECKER_GITLAB_SECRET", - Name: "gitlab-secret", - Usage: "gitlab oauth2 client secret", - }, - cli.StringFlag{ - EnvVar: "DRONE_GITLAB_GIT_USERNAME,WOODPECKER_GITLAB_GIT_USERNAME", - Name: "gitlab-git-username", - Usage: "gitlab service account username", - }, - cli.StringFlag{ - EnvVar: "DRONE_GITLAB_GIT_PASSWORD,WOODPECKER_GITLAB_GIT_PASSWORD", - Name: "gitlab-git-password", - Usage: "gitlab service account password", - }, - cli.BoolFlag{ - EnvVar: "DRONE_GITLAB_SKIP_VERIFY,WOODPECKER_GITLAB_SKIP_VERIFY", - Name: "gitlab-skip-verify", - Usage: "gitlab skip ssl verification", - }, - cli.BoolFlag{ - EnvVar: "DRONE_GITLAB_PRIVATE_MODE,WOODPECKER_GITLAB_PRIVATE_MODE", - Name: "gitlab-private-mode", - Usage: "gitlab is running in private mode", - }, - cli.BoolFlag{ - EnvVar: "DRONE_GITLAB_V3_API,WOODPECKER_GITLAB_V3_API", - Name: "gitlab-v3-api", - Usage: "gitlab is running the v3 api", - }, - cli.BoolFlag{ - EnvVar: "DRONE_STASH,WOODPECKER_STASH", - Name: "stash", - Usage: "stash driver is enabled", - }, - cli.StringFlag{ - EnvVar: "DRONE_STASH_URL,WOODPECKER_STASH_URL", - Name: "stash-server", - Usage: "stash server address", - }, - cli.StringFlag{ - EnvVar: "DRONE_STASH_CONSUMER_KEY,WOODPECKER_STASH_CONSUMER_KEY", - Name: "stash-consumer-key", - Usage: "stash oauth1 consumer key", - }, - cli.StringFlag{ - EnvVar: "DRONE_STASH_CONSUMER_RSA,WOODPECKER_STASH_CONSUMER_RSA", - Name: "stash-consumer-rsa", - Usage: "stash oauth1 private key file", - }, - cli.StringFlag{ - EnvVar: "DRONE_STASH_CONSUMER_RSA_STRING,WOODPECKER_STASH_CONSUMER_RSA_STRING", - Name: "stash-consumer-rsa-string", - Usage: "stash oauth1 private key string", - }, - cli.StringFlag{ - EnvVar: "DRONE_STASH_GIT_USERNAME,WOODPECKER_STASH_GIT_USERNAME", - Name: "stash-git-username", - Usage: "stash service account username", - }, - cli.StringFlag{ - EnvVar: "DRONE_STASH_GIT_PASSWORD,WOODPECKER_STASH_GIT_PASSWORD", - Name: "stash-git-password", - Usage: "stash service account password", - }, - cli.BoolFlag{ - EnvVar: "DRONE_STASH_SKIP_VERIFY,WOODPECKER_STASH_SKIP_VERIFY", - Name: "stash-skip-verify", - Usage: "stash skip ssl verification", - }, - cli.BoolFlag{ - EnvVar: "DRONE_CODING,WOODPECKER_CODING", - Name: "coding", - Usage: "coding driver is enabled", - }, - cli.StringFlag{ - EnvVar: "DRONE_CODING_URL,WOODPECKER_CODING_URL", - Name: "coding-server", - Usage: "coding server address", - Value: "https://coding.net", - }, - cli.StringFlag{ - EnvVar: "DRONE_CODING_CLIENT,WOODPECKER_CODING_CLIENT", - Name: "coding-client", - Usage: "coding oauth2 client id", - }, - cli.StringFlag{ - EnvVar: "DRONE_CODING_SECRET,WOODPECKER_CODING_SECRET", - Name: "coding-secret", - Usage: "coding oauth2 client secret", - }, - cli.StringSliceFlag{ - EnvVar: "DRONE_CODING_SCOPE,WOODPECKER_CODING_SCOPE", - Name: "coding-scope", - Usage: "coding oauth scope", - Value: &cli.StringSlice{ - "user", - "project", - "project:depot", - }, - }, - cli.StringFlag{ - EnvVar: "DRONE_CODING_GIT_MACHINE,WOODPECKER_CODING_GIT_MACHINE", - Name: "coding-git-machine", - Usage: "coding machine name", - Value: "git.coding.net", - }, - cli.StringFlag{ - EnvVar: "DRONE_CODING_GIT_USERNAME,WOODPECKER_CODING_GIT_USERNAME", - Name: "coding-git-username", - Usage: "coding machine user username", - }, - cli.StringFlag{ - EnvVar: "DRONE_CODING_GIT_PASSWORD,WOODPECKER_CODING_GIT_PASSWORD", - Name: "coding-git-password", - Usage: "coding machine user password", - }, - cli.BoolFlag{ - EnvVar: "DRONE_CODING_SKIP_VERIFY,WOODPECKER_CODING_SKIP_VERIFY", - Name: "coding-skip-verify", - Usage: "coding skip ssl verification", - }, - cli.DurationFlag{ - EnvVar: "DRONE_KEEPALIVE_MIN_TIME,WOODPECKER_KEEPALIVE_MIN_TIME", - Name: "keepalive-min-time", - Usage: "server-side enforcement policy on the minimum amount of time a client should wait before sending a keepalive ping.", - }, -} - func server(c *cli.Context) error { // debug level if requested by user