Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/harness/harness-go-sdk
An SDK written in Go for interacting with the Harness API's
https://github.com/harness/harness-go-sdk
cd ci golang harness sdk
Last synced: 4 days ago
JSON representation
An SDK written in Go for interacting with the Harness API's
- Host: GitHub
- URL: https://github.com/harness/harness-go-sdk
- Owner: harness
- License: apache-2.0
- Created: 2021-06-17T03:42:31.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T10:07:56.000Z (15 days ago)
- Last Synced: 2024-10-29T11:46:48.026Z (14 days ago)
- Topics: cd, ci, golang, harness, sdk
- Language: Go
- Homepage:
- Size: 5.97 MB
- Stars: 13
- Watchers: 53
- Forks: 13
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Harness SDK for Go
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.
## Disclaimer
This product is not supported by the Harness Customer support team. If you have any questions please open a [new issue](https://github.com/harness/harness-go-sdk/issues/new) or join our slack [channel](https://harnesscommunity.slack.com/archives/C02G9CUNF1S).
## Getting Started
### Installing
Use `go get` to retrieve the SDK to add it to your `GOPATH` workspace, or project's Go module dependencies.
```bash
go get github.com/harness/harness-go-sdk
```To update the SDK use `go get -u` to retrieve the latest version of the SDK.
```bash
go get -u github.com/harness/harness-go-sdk
```### Dependencies
The metadata of the SDK's dependencies can be found in the Go module file `go.mod`.
### Go Modules
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 @\ in your go get command.
```bash
go get github.com/harness/[email protected]
```To get the latest SDK repository change use @latest.
```bash
go get github.com/harness/harness-go-sdk@latest
```## Quick Examples
### Get an application by name
```go
client := NewClient()
app, err := client.ApplicationClient.GetApplicationByName("my-app)
```### Create a Service
```go
svc, _ := ServiceFactory(app.Id, serviceName, cac.DeploymentTypes.Kubernetes, cac.ArtifactTypes.Docker)
svc.ApplicationId = app.IdnewService, err := client.Services().UpsertService(svc)
```### Configuration
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.
```go
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.