Bitbucket-API library for golang.
Support Bitbucket API v2.0.
And the response type is json format defined Bitbucket API.
- Bitbucket API v2.0 https://developer.atlassian.com/bitbucket/api/2/reference/resource/
- Swagger for API v2.0 https://api.bitbucket.org/swagger.json
go get github.com/ktrysmt/go-bitbucketBitbucket Cloud accepts several credential types. Pick the constructor that matches your credential.
Atlassian has deprecated app passwords; use an Atlassian API token instead. Pass your Atlassian account email as the username and the API token as the password.
c := bitbucket.NewAPITokenAuth("you@example.com", "your-api-token")NewAPITokenAuth is a thin alias over NewBasicAuth that documents the
intended usage. See the
Atlassian API token guide.
c := bitbucket.NewBasicAuth("username", "app-password")c, err := bitbucket.NewOAuthbearerToken("access-token")When the API is reachable under a customer-specific hostname, pass the base URL alongside the credential:
c, err := bitbucket.NewAPITokenAuthWithBaseUrlStr(
"you@example.com",
"your-api-token",
"https://api.your-isolated-instance.example.com/2.0",
)If the endpoint uses a private CA, supply the PEM bundle:
caBundle, _ := os.ReadFile("/etc/ssl/private-ca.pem")
c, err := bitbucket.NewAPITokenAuthWithBaseUrlStrCaCert(
"you@example.com",
"your-api-token",
"https://api.your-isolated-instance.example.com/2.0",
caBundle,
)The same *WithBaseUrlStr and *WithBaseUrlStrCaCert variants exist for
NewBasicAuth and NewOAuthbearerToken. Alternatively, set
BITBUCKET_API_BASE_URL in the environment to override the default for any
constructor that does not take a URL argument.
package main
import (
"fmt"
"github.com/ktrysmt/go-bitbucket"
)
func main() {
c := bitbucket.NewAPITokenAuth("you@example.com", "your-api-token")
opt := &bitbucket.PullRequestsOptions{
Owner: "your-team",
RepoSlug: "awesome-project",
SourceBranch: "develop",
DestinationBranch: "master",
Title: "fix bug. #9999",
CloseSourceBranch: true,
}
res, err := c.Repositories.PullRequests.Create(opt)
if err != nil {
panic(err)
}
fmt.Println(res)
}package main
import (
"fmt"
"github.com/ktrysmt/go-bitbucket"
)
func main() {
c := bitbucket.NewAPITokenAuth("you@example.com", "your-api-token")
opt := &bitbucket.RepositoryOptions{
Owner: "project_name",
RepoSlug: "repo_name",
Scm: "git",
}
res, err := c.Repositories.Repository.Create(opt)
if err != nil {
panic(err)
}
fmt.Println(res)
}It does not correspond yet. Because there are many differences between v2.0 and v1.0.
- Bitbucket API v1.0 https://confluence.atlassian.com/bitbucket/version-1-423626337.html
It is officially recommended to use v2.0. But unfortunately Bitbucket Server (formerly: Stash) API is still v1.0. And The API v1.0 covers resources that the v2.0 API and API v2.0 is yet to cover.
It's using go mod.
Set your available user account to Global Env.
export BITBUCKET_TEST_USERNAME=<your_username>
export BITBUCKET_TEST_PASSWORD=<your_password>
export BITBUCKET_TEST_OWNER=<your_repo_owner>
export BITBUCKET_TEST_REPOSLUG=<your_repo_name>
export BITBUCKET_TEST_ACCESS_TOKEN=<your_repo_access_token>And just run;
make testIf you want to test individually;
go test -v ./tests/diff_test.goE2E Integration tests;
make test/e2eUnit tests;
make test/unitMock tests;
make test/mockIndividually;
go test ./mock_tests/repository_mock_test.goFor documented workflow of the go:qmock test structure in /mock_tests/repository_mock_test.go refer to;
- TestMockRepositoryPipelineVariables_List_Success
- TestMockRepositoryPipelineVariables_List_Error