mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2026-03-16 17:54:07 +01:00
Add bitbucket datacenter (server) support (#2503)
This pull-requests re-introduces the Bitbucket Server support with a more or less complete rewrite of the forge implementation. We have a lot of on-premises git repositories hosted in Bitbucket Server and need a CI solution for running that and Woodpecker looks promising. The implementation is based on external Bitbucket Server REST client library which we are maintaining and have created in another context. Besides the original support for Bitbucket the re-implementation also adds support for handling Bitbucket pull-request events.
This commit is contained in:
committed by
GitHub
parent
0c9bbf91a3
commit
364d708923
@@ -438,6 +438,43 @@ var flags = append([]cli.Flag{
|
||||
Usage: "gitlab skip ssl verification",
|
||||
},
|
||||
//
|
||||
// Bitbucket DataCenter/Server (previously Stash)
|
||||
//
|
||||
&cli.BoolFlag{
|
||||
EnvVars: []string{"WOODPECKER_BITBUCKET_DC"},
|
||||
Name: "bitbucket-dc",
|
||||
Usage: "Bitbucket DataCenter/Server driver is enabled",
|
||||
},
|
||||
&cli.StringFlag{
|
||||
EnvVars: []string{"WOODPECKER_BITBUCKET_DC_URL"},
|
||||
Name: "bitbucket-dc-server",
|
||||
Usage: "Bitbucket DataCenter/Server server address",
|
||||
},
|
||||
&cli.StringFlag{
|
||||
EnvVars: []string{"WOODPECKER_BITBUCKET_DC_CLIENT_ID"},
|
||||
Name: "bitbucket-dc-client-id",
|
||||
Usage: "Bitbucket DataCenter/Server OAuth 2.0 client id",
|
||||
FilePath: os.Getenv("WOODPECKER_BITBUCKET_DC_CLIENT_ID_FILE"),
|
||||
},
|
||||
&cli.StringFlag{
|
||||
EnvVars: []string{"WOODPECKER_BITBUCKET_DC_CLIENT_SECRET"},
|
||||
Name: "bitbucket-dc-client-secret",
|
||||
Usage: "Bitbucket DataCenter/Server OAuth 2.0 client secret",
|
||||
FilePath: os.Getenv("WOODPECKER_BITBUCKET_DC_CLIENT_SECRET_FILE"),
|
||||
},
|
||||
&cli.StringFlag{
|
||||
EnvVars: []string{"WOODPECKER_BITBUCKET_DC_GIT_USERNAME"},
|
||||
Name: "bitbucket-dc-git-username",
|
||||
Usage: "Bitbucket DataCenter/Server service account username",
|
||||
FilePath: os.Getenv("WOODPECKER_BITBUCKET_DC_GIT_USERNAME_FILE"),
|
||||
},
|
||||
&cli.StringFlag{
|
||||
EnvVars: []string{"WOODPECKER_BITBUCKET_DC_GIT_PASSWORD"},
|
||||
Name: "bitbucket-dc-git-password",
|
||||
Usage: "Bitbucket DataCenter/Server service account password",
|
||||
FilePath: os.Getenv("WOODPECKER_BITBUCKET_DC_GIT_PASSWORD_FILE"),
|
||||
},
|
||||
//
|
||||
// development flags
|
||||
//
|
||||
&cli.StringFlag{
|
||||
|
||||
@@ -33,6 +33,7 @@ import (
|
||||
"go.woodpecker-ci.org/woodpecker/v2/server/cache"
|
||||
"go.woodpecker-ci.org/woodpecker/v2/server/forge"
|
||||
"go.woodpecker-ci.org/woodpecker/v2/server/forge/bitbucket"
|
||||
"go.woodpecker-ci.org/woodpecker/v2/server/forge/bitbucketdatacenter"
|
||||
"go.woodpecker-ci.org/woodpecker/v2/server/forge/gitea"
|
||||
"go.woodpecker-ci.org/woodpecker/v2/server/forge/github"
|
||||
"go.woodpecker-ci.org/woodpecker/v2/server/forge/gitlab"
|
||||
@@ -121,6 +122,8 @@ func setupForge(c *cli.Context) (forge.Forge, error) {
|
||||
return setupGitLab(c)
|
||||
case c.Bool("bitbucket"):
|
||||
return setupBitbucket(c)
|
||||
case c.Bool("bitbucket-dc"):
|
||||
return setupBitbucketDatacenter(c)
|
||||
case c.Bool("gitea"):
|
||||
return setupGitea(c)
|
||||
default:
|
||||
@@ -157,6 +160,19 @@ func setupGitea(c *cli.Context) (forge.Forge, error) {
|
||||
return gitea.New(opts)
|
||||
}
|
||||
|
||||
// setupBitbucketDatacenter helper function to setup the Bitbucket DataCenter/Server forge from the CLI arguments.
|
||||
func setupBitbucketDatacenter(c *cli.Context) (forge.Forge, error) {
|
||||
opts := bitbucketdatacenter.Opts{
|
||||
URL: c.String("bitbucket-dc-server"),
|
||||
Username: c.String("bitbucket-dc-git-username"),
|
||||
Password: c.String("bitbucket-dc-git-password"),
|
||||
ClientID: c.String("bitbucket-dc-client-id"),
|
||||
ClientSecret: c.String("bitbucket-dc-client-secret"),
|
||||
}
|
||||
log.Trace().Msgf("Forge (bitbucketdatacenter) opts: %#v", opts)
|
||||
return bitbucketdatacenter.New(opts)
|
||||
}
|
||||
|
||||
// setupGitLab helper function to setup the GitLab forge from the CLI arguments.
|
||||
func setupGitLab(c *cli.Context) (forge.Forge, error) {
|
||||
return gitlab.New(gitlab.Opts{
|
||||
|
||||
Reference in New Issue
Block a user