diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 18ed6713a..000000000 --- a/.travis.yml +++ /dev/null @@ -1,34 +0,0 @@ -sudo: false - -language: go - -go: - - 1.10.x - - 1.11.x - - 1.12.x - -env: - global: - - DEP_RELEASE_TAG=v0.5.1 # so the script knows which version to use - - GOSEC_RELEASE_TAG=1.3.0 - -before_install: - - curl -sSL https://raw.githubusercontent.com/golang/dep/master/install.sh | sh - - curl -sfL https://raw.githubusercontent.com/securego/gosec/master/install.sh | sh -s -- -b $GOPATH/bin $GOSEC_RELEASE_TAG - -install: - - dep ensure -v - - go install ./vendor/golang.org/x/lint/golint - -script: - - grep -L -r --include *.go --exclude-dir vendor -P "Copyright (\d{4}|\(c\)) Microsoft" ./ | tee /dev/stderr | test -z "$(< /dev/stdin)" - - if [[ $TRAVIS_GO_VERSION == 1.11* ]]; then test -z "$(gofmt -s -l -w ./autorest/. | tee /dev/stderr)"; fi - - test -z "$(golint ./autorest/... | tee /dev/stderr)" - - go vet ./autorest/... - #- test -z "$(gosec ./autorest/... | tee /dev/stderr | grep Error)" - - go build -v ./autorest/... - - go test -race -v ./autorest/... - -cache: - directories: - - $GOPATH/pkg/dep diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b753704c..d5748316e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # CHANGELOG +## v12.3.0 + +### New Features + +- Support for multi-tenant via x-ms-authorization-auxiliary header has been added for client credentials with + secret scenario; this basically bundles multiple OAuthConfig and ServicePrincipalToken types into corresponding + MultiTenant* types along with a new authorizer that adds the primary and auxiliary token headers to the reqest. + The authenticaion helpers have been updated to support this scenario; if environment var AZURE_AUXILIARY_TENANT_IDS + is set with a semicolon delimited list of tenants the multi-tenant codepath will kick in to create the appropriate authorizer. + See `adal.NewMultiTenantOAuthConfig`, `adal.NewMultiTenantServicePrincipalToken` and `autorest.NewMultiTenantServicePrincipalTokenAuthorizer` + along with their supporting types and methods. +- Added `autorest.WithSendDecorators` and `autorest.GetSendDecorators` for adding and retrieving a custom chain of SendDecorators to the provided context. +- Added `autorest.DoRetryForStatusCodesWithCap` and `autorest.DelayForBackoffWithCap` to enforce an upper bound on the duration between retries. + ## v12.2.0 ### New Features diff --git a/README.md b/README.md index 9a7b13a35..d78ddda69 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # go-autorest [![GoDoc](https://godoc.org/github.com/Azure/go-autorest/autorest?status.png)](https://godoc.org/github.com/Azure/go-autorest/autorest) -[![Build Status](https://travis-ci.org/Azure/go-autorest.svg?branch=master)](https://travis-ci.org/Azure/go-autorest) +[![Build Status](https://dev.azure.com/azure-sdk/public/_apis/build/status/go/Azure.go-autorest?branchName=master)](https://dev.azure.com/azure-sdk/public/_build/latest?definitionId=625&branchName=master) [![Go Report Card](https://goreportcard.com/badge/Azure/go-autorest)](https://goreportcard.com/report/Azure/go-autorest) Package go-autorest provides an HTTP request client for use with [Autorest](https://github.com/Azure/autorest.go)-generated API client packages. diff --git a/autorest/adal/persist_test.go b/autorest/adal/persist_test.go index baa6f00bf..2c98c127e 100644 --- a/autorest/adal/persist_test.go +++ b/autorest/adal/persist_test.go @@ -159,7 +159,7 @@ func TestSaveTokenFailsNoPermission(t *testing.T) { } func TestSaveTokenFailsCantCreate(t *testing.T) { - tokenPath := "/thiswontwork" + tokenPath := "/usr/thiswontwork" if runtime.GOOS == "windows" { tokenPath = path.Join(os.Getenv("windir"), "system32") } diff --git a/autorest/version.go b/autorest/version.go index 8ba0f591d..ec7e84817 100644 --- a/autorest/version.go +++ b/autorest/version.go @@ -19,7 +19,7 @@ import ( "runtime" ) -const number = "v12.2.0" +const number = "v12.3.0" var ( userAgent = fmt.Sprintf("Go/%s (%s-%s) go-autorest/%s", diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 000000000..df553150b --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,49 @@ +pool: + vmImage: 'Ubuntu 16.04' + +variables: + GOROOT: '/usr/local/go1.12' + GOPATH: '$(system.defaultWorkingDirectory)/work' + sdkPath: '$(GOPATH)/src/github.com/$(build.repository.name)' + +steps: +- script: | + set -e + mkdir -p '$(GOPATH)/bin' + mkdir -p '$(sdkPath)' + shopt -s extglob + mv !(work) '$(sdkPath)' + echo '##vso[task.prependpath]$(GOROOT)/bin' + echo '##vso[task.prependpath]$(GOPATH)/bin' + displayName: 'Create Go Workspace' +- script: | + set -e + curl -sSL https://raw.githubusercontent.com/golang/dep/master/install.sh | sh + dep ensure -v + go install ./vendor/golang.org/x/lint/golint + workingDirectory: '$(sdkPath)' + displayName: 'Install Dependencies' +- script: go vet ./autorest/... + workingDirectory: '$(sdkPath)' + displayName: 'Vet' +- script: go build -v ./autorest/... + workingDirectory: '$(sdkPath)' + displayName: 'Build' +- script: go test -race -v ./autorest/... + workingDirectory: '$(sdkPath)' + displayName: 'Run Tests' +- script: grep -L -r --include *.go --exclude-dir vendor -P "Copyright (\d{4}|\(c\)) Microsoft" ./ | tee >&2 + workingDirectory: '$(sdkPath)' + displayName: 'Copyright Header Check' + failOnStderr: true + condition: succeededOrFailed() +- script: gofmt -s -l -w ./autorest/. >&2 + workingDirectory: '$(sdkPath)' + displayName: 'Format Check' + failOnStderr: true + condition: succeededOrFailed() +- script: golint ./autorest/... >&2 + workingDirectory: '$(sdkPath)' + displayName: 'Linter Check' + failOnStderr: true + condition: succeededOrFailed()