From c00b3a520cb2447cd1d196c0b1983a0b77354174 Mon Sep 17 00:00:00 2001 From: Matt Holt Date: Fri, 29 Mar 2019 18:57:02 -0600 Subject: [PATCH] ci: Azure Pipelines CI system (#2540) * Set up CI with Azure Pipelines [skip ci] * Add other platforms [skip ci] * Oops, add vmImage back in [skip ci] * Fix goVersion [skip ci] * Use sudo to install Go [skip ci] * Attempt platform-specific Go isntalls [skip ci] * Try sharing the variable a different way [skip ci] * Trying this again... [skip ci] * Fix the PATH [skip ci] * Fix GOROOT, hopefully [skip ci] * More fixing [skip ci] * Still fixing [skip ci] * Add golang-ci [skip ci] * asdfasdfasf [skip ci] * Sigh, work around broken golangci-lint installer [skip ci] * Try again [skip ci] * ahhhhhh [skip ci] * sooooo close! cleanup [skip ci] * oh c'mon [skip ci] * thought I had it for a sec [skip ci] * yaaaayyyy [skip ci] ship it --- azure-pipelines.yml | 86 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 azure-pipelines.yml diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 000000000..0c208259d --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,86 @@ +# Mutilated beyond recognition from the example at: +# https://docs.microsoft.com/azure/devops/pipelines/languages/go + +trigger: +- master + +strategy: + matrix: + linux: + imageName: ubuntu-16.04 + gorootDir: /usr/local + mac: + imageName: macos-10.13 + gorootDir: /usr/local + windows: + imageName: windows-2019 + gorootDir: C:\ + +pool: + vmImage: $(imageName) + +variables: + GOROOT: $(gorootDir)/go + GOPATH: $(system.defaultWorkingDirectory)/gopath + GOBIN: $(GOPATH)/bin + modulePath: '$(GOPATH)/src/github.com/$(build.repository.name)' + +steps: +- bash: | + latestGo=$(curl "https://golang.org/VERSION?m=text") + echo "##vso[task.setvariable variable=LATEST_GO]$latestGo" + echo "Latest Go version: $latestGo" + displayName: "Get latest Go version" + +- bash: | + sudo rm -f $(which go) + echo '##vso[task.prependpath]$(GOBIN)' + echo '##vso[task.prependpath]$(GOROOT)/bin' + mkdir -p '$(modulePath)' + shopt -s extglob + shopt -s dotglob + mv !(gopath) '$(modulePath)' + displayName: Remove old Go, set GOBIN/GOROOT, and move project into GOPATH + +# Install Go (this varies by platform) + +- bash: | + wget "https://dl.google.com/go/$(LATEST_GO).linux-amd64.tar.gz" + sudo tar -C $(gorootDir) -xzf "$(LATEST_GO).linux-amd64.tar.gz" + condition: eq( variables['Agent.OS'], 'Linux' ) + displayName: Install Go on Linux + +- bash: | + wget "https://dl.google.com/go/$(LATEST_GO).darwin-amd64.tar.gz" + sudo tar -C $(gorootDir) -xzf "$(LATEST_GO).darwin-amd64.tar.gz" + condition: eq( variables['Agent.OS'], 'Darwin' ) + displayName: Install Go on macOS + +- powershell: | + Write-Host "Downloading Go... (please be patient, I am very slow)" + (New-Object System.Net.WebClient).DownloadFile("https://dl.google.com/go/$(LATEST_GO).windows-amd64.zip", "$(LATEST_GO).windows-amd64.zip") + Write-Host "Extracting Go... (I'm slow too)" + Expand-Archive "$(LATEST_GO).windows-amd64.zip" -DestinationPath "$(gorootDir)" + condition: eq( variables['Agent.OS'], 'Windows_NT' ) + displayName: Install Go on Windows + +# TODO: When this issue is fixed, replace with installer script: +# https://github.com/golangci/golangci-lint/issues/472 +- script: go get -v github.com/golangci/golangci-lint/cmd/golangci-lint + displayName: Install golangci-lint + +- bash: | + printf "Using go at: $(which go)\n" + printf "Go version: $(go version)\n" + printf "\n\nGo environment:\n\n" + go env + printf "\n\nSystem environment:\n\n" + env + displayName: Print Go version and environment + +- script: | + go get -v -t -d ./... + golangci-lint run -E gofmt -E goimports -E misspell + go test -race ./... + workingDirectory: '$(modulePath)' + displayName: Run tests