Microsoft Azure SDK for Go
This is Microsoft Azure's core repository for hosting Go packages which offer a more convenient way of targeting Azure REST endpoints. Here, you'll find a mix of code generated by Autorest and hand maintained packages.
NOTE: This repository is under heavy ongoing development and should be considered a preview. Vendoring your dependencies is always a good idea, but it is doubly important if you're consuming this library.
Installation
- If you don't already have it, install the Go Programming Language.
- Go get the SDK:
$ go get -u github.com/Azure/azure-sdk-for-go/...
IMPORTANT: We highly suggest vendoring Azure SDK for Go as a dependency. For vendoring dependencies, Azure SDK for Go uses glide.
Versioning
SDK Versions
The entire SDK will continue to be distributed as a single repository, and be labeled with version tags that are applicable to the whole repository. The tags in this repository are based on, but do not conform to SemVer.org's recommendations. For now, the "-beta" tag is an indicator that we are still in preview and still are planning on releasing some breaking changes.
While in beta, we will only accept contributions to the dev
or master
branches. Once the beta
tag is removed, we'll
only contribute new features and Azure API surface space to the most recent major version of our SDK. However, pull requests
to older major versions will be evaluated and accepted as appropriate. Any critical bugs will be fixed in old versions as well.
To facilitate pull requests, a branch will be created for each of the major versions accepting support. For example,
should we have tags denoting the versions, v11.1.0
, v11.2.0
, and v12.0.0
, a branch v11
would be present for submission
of PRs.
Azure Versions
Azure services mostly do not use SemVer based versions. Rather, they stamp a set of REST endpoints with a date identifier. One will often see these stamps casually referred to as "API Versions". At the moment, our SDK only supports the most recent stamp for each service. In order to lock to an API version, one must also lock to an SDK version. However, as discussed in #517, our objective is to reorganize and publish an independent package for each stamped API version of each service. In that way, we'll be able to support all API Versions in a single SDK Version.
Knowing which API Versions of services are compatbile with one another, and finding which API Versions are available in which environments has been a common source of frustration for users. Along with Azure Stack, these problems have led to the development of "Profiles" which are aggregations of multiple services at particular API Versions. Using profiles with our SDK will be optional, and to opt-in you will need to be running Go 1.9 or higher.
Documentation
- Azure SDK for Go Documentation is available at GoDoc.org.
- Azure REST APIs used by packages in this repository are documented at Microsoft Docs, Azure REST.
- Azure Services are discussed in detail at Microsoft Docs, Azure Services.
Code samples
License
This project is published under Apache 2.0 License.
Contribute
If you would like to become an active contributor to this project please follow the instructions provided in Microsoft Azure Projects Contribution Guidelines.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.