This project is a Harness SDK for the go programming language. It provides go client for interacting with the current gen GraphQL and Config-as-Code API's.
This product is not supported by the Harness Customer support team. If you have any questions please open a new issue or join our slack channel.
Use go get
to retrieve the SDK to add it to your GOPATH
workspace, or project's Go module dependencies.
go get github.com/harness/harness-go-sdk
To update the SDK use go get -u
to retrieve the latest version of the SDK.
go get -u github.com/harness/harness-go-sdk
The metadata of the SDK's dependencies can be found in the Go module file go.mod
.
If you are using Go modules, your go get will default to the latest tagged release version of the SDK. To get a specific release version of the SDK use @\<tag> in your go get command.
go get github.com/harness/harness-go-sdk@v0.2.11
To get the latest SDK repository change use @latest.
go get github.com/harness/harness-go-sdk@latest
client := NewClient()
app, err := client.ApplicationClient.GetApplicationByName("my-app)
svc, _ := ServiceFactory(app.Id, serviceName, cac.DeploymentTypes.Kubernetes, cac.ArtifactTypes.Docker)
svc.ApplicationId = app.Id
newService, err := client.Services().UpsertService(svc)
There are a few environment variables you can set to configure the api client.
HARNESS_ACCOUNT_ID
: (required) The ID of the harness account you are connecting to.HARNESS_API_KEY
: (required) The API Key used for authentication.HARNESS_BEARER_TOKEN
: (optional) The authentication bearer token. This is needed for certain API calls to the config-as-code
API's. This will be deprecated in the near future once those endpoints are updated.HARNESS_ENDPOINT
: (optional) The FQDN for contacting the Harness managers. Defaults to https://app.harness.io
.If you need to provide additional configuration you can create a client object from scratch.
client := &Client{
UserAgent: getUserAgentString(),
Endpoint: utils.GetEnv(envvar.Endpoint, utils.DefaultApiUrl),
AccountId: os.Getenv(envvar.AccountId),
APIKey: os.Getenv(envvar.ApiKey),
BearerToken: os.Getenv(envvar.BearerToken),
HTTPClient: &retryablehttp.Client{
RetryMax: 10,
RetryWaitMin: 5 * time.Second,
RetryWaitMax: 10 * time.Second,
HTTPClient: &http.Client{
Timeout: 10 * time.Second,
},
Backoff: retryablehttp.DefaultBackoff,
CheckRetry: retryablehttp.DefaultRetryPolicy,
},
}
The github.com/hashicorp/go-retryablehttp
is essentially a drop-in replacement for the http
package and is used to handle retries when getting rate limited.