-
Notifications
You must be signed in to change notification settings - Fork 17
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #167 from mih/appveyor
Adopt standard appveyor config
- Loading branch information
Showing
2 changed files
with
222 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,220 @@ | ||
# This CI setup provides a largely homogeneous configuration across all | ||
# major platforms (Windows, MacOS, and Linux). The aim of this test setup is | ||
# to create a "native" platform experience, using as few cross-platform | ||
# helper tools as possible. | ||
# | ||
# On Linux/Mac a virtualenv is used for testing. The effective virtual env | ||
# is available under ~/VENV. | ||
# | ||
# All workers support remote login. Login details are shown at the top of each | ||
# CI run log. | ||
# | ||
# - Linux/Mac workers (via SSH): | ||
# | ||
# - A permitted SSH key must be defined in an APPVEYOR_SSH_KEY environment | ||
# variable (via the appveyor project settings) | ||
# | ||
# - SSH login info is given in the form of: '[email protected] -p 22xxx' | ||
# | ||
# - Login with: | ||
# | ||
# ssh -o StrictHostKeyChecking=no <LOGIN> | ||
# | ||
# - to prevent the CI run from exiting, `touch` a file named `BLOCK` in the | ||
# user HOME directory (current directory directly after login). The session | ||
# will run until the file is removed (or 60 min have passed) | ||
# | ||
# - Windows workers (via RDP): | ||
# | ||
# - An RDP password should be defined in an APPVEYOR_RDP_PASSWORD environment | ||
# variable (via the appveyor project settings), or a random password is used | ||
# every time | ||
# | ||
# - RDP login info is given in the form of IP:PORT | ||
# | ||
# - Login with: | ||
# | ||
# xfreerdp /cert:ignore /dynamic-resolution /u:appveyor /p:<PASSWORD> /v:<LOGIN> | ||
# | ||
# - to prevent the CI run from exiting, create a textfile named `BLOCK` on the | ||
# Desktop (a required .txt extension will be added automatically). The session | ||
# will run until the file is removed (or 60 min have passed) | ||
# | ||
# - in a terminal execute, for example, `C:\datalad_debug.bat 39` to set up the | ||
# environment to debug in a Python 3.8 session (should generally match the | ||
# respective CI run configuration). | ||
|
||
|
||
# do not make repository clone cheap: interfers with versioneer | ||
shallow_clone: false | ||
|
||
|
||
environment: | ||
DATALAD_TESTS_SSH: 1 | ||
|
||
# Do not use `image` as a matrix dimension, to have fine-grained control over | ||
# what tests run on which platform | ||
# The ID variable had no impact, but sorts first in the CI run overview | ||
# an intelligible name can help to locate a specific test run | ||
matrix: | ||
# List a CI run for each platform first, to have immediate access when there | ||
# is a need for debugging | ||
|
||
# Ubuntu core tests | ||
- ID: Ubu20 | ||
DTS: datalad_container | ||
APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004 | ||
INSTALL_SYSPKGS: python3-virtualenv xz-utils singularity-container | ||
# system git-annex is way too old, use better one | ||
INSTALL_GITANNEX: git-annex -m deb-url --url http://snapshot.debian.org/archive/debian/20210906T204127Z/pool/main/g/git-annex/git-annex_8.20210903-1_amd64.deb | ||
CODECOV_BINARY: https://uploader.codecov.io/latest/linux/codecov | ||
# Windows core tests | ||
#- ID: WinP39core | ||
# # ~35 min | ||
# DTS: datalad_container | ||
# APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 | ||
# # Python version specification is non-standard on windows | ||
# PY: 39-x64 | ||
# INSTALL_GITANNEX: git-annex -m datalad/packages | ||
## MacOS core tests | ||
#- ID: MacP38core | ||
# DTS: datalad_container | ||
# APPVEYOR_BUILD_WORKER_IMAGE: macOS | ||
# PY: 3.8 | ||
# INSTALL_GITANNEX: git-annex | ||
# DATALAD_LOCATIONS_SOCKETS: /Users/appveyor/DLTMP/sockets | ||
# CODECOV_BINARY: https://uploader.codecov.io/latest/macos/codecov | ||
|
||
matrix: | ||
allow_failures: | ||
- KNOWN2FAIL: 1 | ||
|
||
|
||
# it is OK to specify paths that may not exist for a particular test run | ||
cache: | ||
# pip cache | ||
- C:\Users\appveyor\AppData\Local\pip\Cache -> .appveyor.yml | ||
- /home/appveyor/.cache/pip -> .appveyor.yml | ||
# TODO: where is the cache on macOS? | ||
#- /Users/appveyor/.cache/pip -> .appveyor.yml | ||
# TODO: Can we cache `brew`? | ||
#- /usr/local/Cellar | ||
#- /usr/local/bin | ||
|
||
|
||
# turn of support for MS project build support (not needed) | ||
build: off | ||
|
||
|
||
# init cannot use any components from the repo, because it runs prior to | ||
# cloning it | ||
init: | ||
# remove windows 260-char limit on path names | ||
- cmd: powershell Set-Itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name LongPathsEnabled -value 1 | ||
# enable developer mode on windows | ||
# this should enable mklink without admin privileges, but it doesn't seem to work | ||
#- cmd: powershell tools\ci\appveyor_enable_windevmode.ps1 | ||
# enable RDP access on windows (RDP password is in appveyor project config) | ||
# this is relatively expensive (1-2min), but very convenient to jump into any build at any time | ||
- cmd: powershell.exe iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) | ||
# enable external SSH access to CI worker on all other systems | ||
# needs APPVEYOR_SSH_KEY defined in project settings (or environment) | ||
- sh: curl -sflL 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-ssh.sh' | bash -e - | ||
# Identity setup | ||
- git config --global user.email "[email protected]" | ||
- git config --global user.name "Appveyor Almighty" | ||
# Scratch space | ||
- cmd: md C:\DLTMP | ||
# we place the "unix" one into the user's HOME to avoid git-annex issues on MacOSX | ||
# gh-5291 | ||
- sh: mkdir ~/DLTMP | ||
# and use that scratch space to get short paths in test repos | ||
# (avoiding length-limits as much as possible) | ||
- cmd: "set TMP=C:\\DLTMP" | ||
- cmd: "set TEMP=C:\\DLTMP" | ||
- sh: export TMPDIR=~/DLTMP | ||
|
||
|
||
install: | ||
# place a debug setup helper at a convenient location | ||
- cmd: copy tools\ci\appveyor_env_setup.bat C:\\datalad_debug.bat | ||
# If a particular Python version is requested, use env setup (using the | ||
# appveyor provided environments/installation). Note, these are broken | ||
# on the ubuntu images | ||
# https://help.appveyor.com/discussions/problems/28217-appveyor-ubunu-image-with-python3-lzma-module | ||
# Otherwise create a virtualenv using the default Python 3, to enable uniform | ||
# use of python/pip executables below | ||
- sh: "[ \"x$PY\" != x ] && . ${HOME}/venv${PY}/bin/activate || virtualenv -p 3 ${HOME}/dlvenv && . ${HOME}/dlvenv/bin/activate; ln -s \"$VIRTUAL_ENV\" \"${HOME}/VENV\"" | ||
- cmd: "set PATH=C:\\Python%PY%;C:\\Python%PY%\\Scripts;%PATH%" | ||
# deploy the datalad installer, override version via DATALAD_INSTALLER_VERSION | ||
- cmd: | ||
IF DEFINED DATALAD_INSTALLER_VERSION ( | ||
python -m pip install -q "datalad-installer%DATALAD_INSTALLER_VERSION%" | ||
) ELSE ( | ||
python -m pip install -q datalad-installer | ||
) | ||
- sh: python -m pip install -q datalad-installer${DATALAD_INSTALLER_VERSION:-} | ||
# setup neurodebian, needs update of sources.list when base release changes | ||
- sh: "[ \"$ID\"x = \"Ubu20x\" ] && wget -O- http://neuro.debian.net/lists/focal.us-nh.full | sudo tee /etc/apt/sources.list.d/neurodebian.sources.list && ( sudo apt-key adv --recv-keys --keyserver hkps://keyserver.ubuntu.com 0xA5D32F012649A5A9 || { wget -q -O- http://neuro.debian.net/_static/neuro.debian.net.asc | sudo apt-key add -; } )" | ||
# Missing system software | ||
- sh: "[ -n \"$INSTALL_SYSPKGS\" ] && ( [ \"x${APPVEYOR_BUILD_WORKER_IMAGE}\" = \"xmacOS\" ] && brew install -q ${INSTALL_SYSPKGS} || { sudo apt-get update -y -qq && sudo apt-get install -qq --no-install-recommends -y ${INSTALL_SYSPKGS}; } ) || true" | ||
# Install git-annex on windows, otherwise INSTALL_SYSPKGS can be used | ||
# deploy git-annex, if desired | ||
- cmd: IF DEFINED INSTALL_GITANNEX datalad-installer --sudo ok %INSTALL_GITANNEX% | ||
- sh: "[ -n \"${INSTALL_GITANNEX}\" ] && datalad-installer --sudo ok ${INSTALL_GITANNEX}" | ||
# in case of a snapshot installation, use the following approach to adjust | ||
# the PATH as necessary | ||
#- sh: "[ -n \"${INSTALL_GITANNEX}\" ] && datalad-installer -E ${HOME}/dlinstaller_env.sh --sudo ok ${INSTALL_GITANNEX}" | ||
# add location of datalad installer results to PATH | ||
#- sh: "[ -f ${HOME}/dlinstaller_env.sh ] && . ${HOME}/dlinstaller_env.sh || true" | ||
|
||
|
||
#before_build: | ||
# | ||
|
||
|
||
build_script: | ||
- python -m pip install -q -r requirements-devel.txt | ||
- python -m pip install . | ||
|
||
|
||
#after_build: | ||
# | ||
|
||
|
||
before_test: | ||
# simple call to see if datalad and git-annex are installed properly | ||
- datalad wtf | ||
|
||
|
||
test_script: | ||
# run tests on installed module, not source tree files | ||
- cmd: md __testhome__ | ||
- sh: mkdir __testhome__ | ||
- cd __testhome__ | ||
# run test selecion (--traverse-namespace needed from Python 3.8 onwards) | ||
- cmd: python -m nose --traverse-namespace -s -v -A "not (turtle)" --with-cov --cover-package datalad_container %DTS% | ||
- sh: python -m nose --traverse-namespace -s -v -A "not (turtle)" --with-cov --cover-package datalad_container ${DTS} | ||
|
||
|
||
after_test: | ||
- python -m coverage xml | ||
- cmd: curl -fsSL -o codecov.exe "https://uploader.codecov.io/latest/windows/codecov.exe" | ||
- cmd: .\codecov.exe -f "coverage.xml" | ||
- sh: "curl -Os $CODECOV_BINARY" | ||
- sh: chmod +x codecov | ||
- sh: ./codecov | ||
|
||
|
||
#on_success: | ||
# | ||
|
||
|
||
#on_failure: | ||
# | ||
|
||
|
||
on_finish: | ||
# conditionally block the exit of a CI run for direct debugging | ||
- sh: while [ -f ~/BLOCK ]; do sleep 5; done | ||
- cmd: powershell.exe while ((Test-Path "C:\Users\\appveyor\\Desktop\\BLOCK.txt")) { Start-Sleep 5 } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters