85 lines
3.1 KiB
YAML
85 lines
3.1 KiB
YAML
version: "{build}"
|
|
|
|
os: Visual Studio 2017
|
|
build: off
|
|
stack: go 1.13
|
|
|
|
environment:
|
|
GOPATH: c:\gopath
|
|
GO111MODULE: on
|
|
|
|
clone_folder: c:\gopath\src\github.com\prometheus-community\windows_exporter
|
|
|
|
install:
|
|
- mkdir %GOPATH%\bin
|
|
- set PATH=%GOPATH%\bin;%PATH%
|
|
- set PATH=%PATH%;C:\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin
|
|
- choco install gitversion.portable make -y
|
|
- ps: |
|
|
appveyor DownloadFile https://github.com/golangci/golangci-lint/releases/download/v1.21.0/golangci-lint-1.21.0-windows-amd64.zip
|
|
Expand-Archive golangci-lint-1.21.0-windows-amd64.zip
|
|
Move-Item golangci-lint-1.21.0-windows-amd64\golangci-lint-1.21.0-windows-amd64\golangci-lint.exe $env:GOPATH\bin\golangci-lint.exe
|
|
- ps: |
|
|
$env:GO111MODULE="off"
|
|
go get -u github.com/prometheus/promu
|
|
go get -u github.com/josephspurrier/goversioninfo/cmd/goversioninfo
|
|
$env:GO111MODULE="on"
|
|
|
|
test_script:
|
|
- make test
|
|
|
|
after_test:
|
|
- make lint
|
|
|
|
build_script:
|
|
- ps: |
|
|
# go mod download (or, if we don't call it, go build) will write every dependent package name to
|
|
# stderr, which will be interpreted as an error and abort the build if ErrorActionPreference is Stop,
|
|
# so we need to run it before setting the preference.
|
|
go mod download
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
gitversion /output json /showvariable FullSemVer | Set-Content VERSION -PassThru
|
|
$Version = Get-Content VERSION
|
|
# Windows versioninfo resources need the file version by parts (but product version is free text)
|
|
$VersionParts = ($Version -replace '^v?([0-9\.]+).*$','$1').Split(".")
|
|
goversioninfo.exe -ver-major $VersionParts[0] -ver-minor $VersionParts[1] -ver-patch $VersionParts[2] -product-version $Version -platform-specific
|
|
|
|
make crossbuild
|
|
# GH requires all files to have different names, so add version/arch to differentiate
|
|
foreach($Arch in "amd64","386") {
|
|
Rename-Item output\$Arch\windows_exporter.exe -NewName windows_exporter-$Version-$Arch.exe
|
|
}
|
|
|
|
after_build:
|
|
- ps: |
|
|
# Build installer packages only on tagged releases
|
|
if($env:APPVEYOR_REPO_TAG -ne "True") {
|
|
return
|
|
}
|
|
$ErrorActionPreference = "Stop"
|
|
$BuildVersion = Get-Content VERSION
|
|
# The MSI version is not semver compliant, so just take the numerical parts
|
|
$MSIVersion = $env:APPVEYOR_REPO_TAG_NAME -replace '^v?([0-9\.]+).*$','$1'
|
|
foreach($Arch in "amd64","386") {
|
|
Write-Verbose "Building windows_exporter $MSIVersion msi for $Arch"
|
|
.\installer\build.ps1 -PathToExecutable .\output\$Arch\windows_exporter-$BuildVersion-$Arch.exe -Version $MSIVersion -Arch "$Arch"
|
|
Move-Item installer\Output\windows_exporter-$MSIVersion-$Arch.msi output\$Arch\
|
|
}
|
|
- promu checksum output\
|
|
|
|
artifacts:
|
|
- name: Artifacts
|
|
path: output\**\*
|
|
|
|
deploy:
|
|
- provider: GitHub
|
|
description: windows_exporter version $(appveyor_build_version)
|
|
artifact: Artifacts
|
|
auth_token:
|
|
secure: 'hFR7Ymxt/Rb25p4BweFvMNhX03lHD9kXJXrRlC/KbThazHuLD5NTx2ibMI6LYRsr'
|
|
draft: false
|
|
prerelease: false
|
|
on:
|
|
appveyor_repo_tag: true
|