diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 000000000..3e1575505 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,43 @@ +variables: + GOBIN: '$(GOPATH)/bin' # Go binaries path + GOROOT: '/usr/local/go1.12' # Go installation path + GOPATH: '$(system.defaultWorkingDirectory)/gopath' # Go workspace path + modulePath: '$(GOPATH)/src/github.com/$(build.repository.name)' # Path to the module's code + +trigger: + batch: "true" + branches: + include: + - master + +jobs: + +- job: Compile + strategy: + maxParallel: 3 + matrix: + Windows: + OS: windows + OSX: + OS: darwin + Linux: + OS: linux + steps: + - template: build/azure-pipelines/go-env.yaml + - script: "go run build/build.go -os $(OS)" + workingDirectory: '$(modulePath)' + +- job: "unittests" + displayName: "Run Unit Tests" + steps: + - template: build/azure-pipelines/go-env.yaml + - script: "go test ./..." + workingDirectory: '$(modulePath)' + +- job: "GoFmt" + steps: + - script: | + go fmt ./... + git diff + git diff --exit-code + diff --git a/build/azure-pipelines/go-env.yaml b/build/azure-pipelines/go-env.yaml new file mode 100644 index 000000000..74e58a454 --- /dev/null +++ b/build/azure-pipelines/go-env.yaml @@ -0,0 +1,12 @@ +# shared step for setting up go env +# see https://docs.microsoft.com/en-us/azure/devops/pipelines/languages/go?view=azure-devops#build-a-container-image +steps: +- script: | + mkdir -p '$(GOBIN)' + mkdir -p '$(GOPATH)/pkg' + mkdir -p '$(modulePath)' + shopt -s extglob + mv !(gopath) '$(modulePath)' + echo '##vso[task.prependpath]$(GOBIN)' + echo '##vso[task.prependpath]$(GOROOT)/bin' + displayName: 'Set up the Go workspace'