# Version format version: "{build}" # Operating system (build VM template) os: Windows Server 2012 R2 # Environment variables environment: GOROOT: c:\go1.7.1 GOPATH: c:\gopath PYWIN_DL: https://beats-files.s3.amazonaws.com/deps/pywin32-220.win32-py2.7.exe matrix: - PROJ: github.com\elastic\beats\metricbeat BEAT: metricbeat - PROJ: github.com\elastic\beats\filebeat BEAT: filebeat - PROJ: github.com\elastic\beats\winlogbeat BEAT: winlogbeat # Custom clone folder (variables are not expanded here). clone_folder: c:\gopath\src\github.com\elastic\beats # Cache mingw install until appveyor.yml is modified. cache: - C:\ProgramData\chocolatey\bin -> .appveyor.yml - C:\ProgramData\chocolatey\lib -> .appveyor.yml - C:\go1.7.1 -> .appveyor.yml - C:\tools\mingw64 -> .appveyor.yml - C:\pywin_inst.exe -> .appveyor.yml # Scripts that run after cloning repository install: - ps: c:\gopath\src\github.com\elastic\beats\libbeat\scripts\install-go.ps1 -version 1.7.1 - set PATH=%GOROOT%\bin;%PATH% # AppVeyor installed mingw is 32-bit only. - ps: >- if(!(Test-Path "C:\tools\mingw64\bin\gcc.exe")) { cinst mingw > mingw-install.txt Push-AppveyorArtifact mingw-install.txt } - set PATH=C:\tools\mingw64\bin;%GOROOT%\bin;%PATH% - set PATH=%GOPATH%\bin;%PATH% - go install github.com/elastic/beats/vendor/github.com/pierrre/gotestcover - go version - go env # Download the PyWin32 installer if it is not cached. - ps: >- if(!(Test-Path "C:\pywin_inst.exe")) { (new-object net.webclient).DownloadFile("$env:PYWIN_DL", 'C:/pywin_inst.exe') } - set PYTHONPATH=C:\Python27 - set PATH=%PYTHONPATH%;%PYTHONPATH%\Scripts;%PATH% - python --version - pip install jinja2 nose nose-timer PyYAML redis - easy_install C:/pywin_inst.exe # To run your custom scripts instead of automatic MSBuild build_script: # Compile - appveyor AddCompilationMessage "Starting Compile" - ps: cd $env:BEAT - go build - appveyor AddCompilationMessage "Compile Success" -FileName "%BEAT%.exe" # To run your custom scripts instead of automatic tests test_script: # Unit tests - ps: Add-AppveyorTest "Unit Tests" -Outcome Running - mkdir build\coverage - gotestcover -race -coverprofile=build/coverage/integration.cov github.com/elastic/beats/%BEAT%/... - ps: Update-AppveyorTest "Unit Tests" -Outcome Passed # System tests - ps: Add-AppveyorTest "System tests" -Outcome Running - go test -race -c -cover -covermode=atomic -coverpkg ./... - ps: | if ($env:BEAT -eq "metricbeat") { cp .\_meta\fields.common.yml .\_meta\fields.generated.yml python .\scripts\fields_collector.py | out-file -append -encoding UTF8 -filepath .\_meta\fields.generated.yml } - ps: cd tests/system - nosetests --with-timer - ps: Update-AppveyorTest "System tests" -Outcome Passed after_test: - ps: cd $env:GOPATH\src\$env:PROJ - python ..\dev-tools\aggregate_coverage.py -o build\coverage\system.cov .\build\system-tests\run - python ..\dev-tools\aggregate_coverage.py -o build\coverage\full.cov .\build\coverage - go tool cover -html=build\coverage\full.cov -o build\coverage\full.html - ps: Push-AppveyorArtifact build\coverage\full.cov - ps: Push-AppveyorArtifact build\coverage\full.html # Upload coverage report. - "SET PATH=C:\\Python34;C:\\Python34\\Scripts;%PATH%" - pip install codecov - ps: cd $env:GOPATH\src\github.com\elastic\beats - codecov -X gcov -f "%BEAT%\build\coverage\full.cov" # Executes for both successful and failed builds on_finish: - ps: cd $env:GOPATH\src\$env:PROJ - 7z a -r system-tests-output.zip build\system-tests\run - ps: Push-AppveyorArtifact system-tests-output.zip # To disable deployment deploy: off # Notifications should only be setup using the AppVeyor UI so that # forks can be created without inheriting the settings.