Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.7 KiB
86 lines
2.7 KiB
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)' |
|
# TODO: Enable modules after upstream dependency zstd supports them |
|
# TODO: modules should be the default in Go 1.13, so this won't be needed |
|
#GO111MODULE: on |
|
|
|
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
|
|
|