forked from sktime/sktime
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.appveyor.yml
130 lines (109 loc) · 5.37 KB
/
.appveyor.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Appveyor is a continuous integration service to build, test and deploy the package
# adapted from
# - https://packaging.python.org/guides/supporting-windows-using-appveyor/ and
# - https://github.com/scikit-learn/scikit-learn/blob/master/appveyor.yml
branches:
only:
- main
environment:
global:
# SDK v7.0 MSVC Express 2008's SetEnv.cmd script will fail if the
# /E:ON and /V:ON options are not enabled in the batch script interpreter
# See: https://stackoverflow.com/a/13751649/163740
CMD_IN_ENV: "cmd /E:ON /V:ON /C .\\build_tools\\appveyor\\run_with_env.cmd"
TEST_DIR: "/tmp/sktime"
REQUIREMENTS: "build_tools/requirements.txt"
# set in https://ci.appveyor.com/project/<user>/<project>/settings/environment
TWINE_USERNAME: __token__
matrix:
- PYTHON_VERSION: "3.6"
MINICONDA_VERSION: C:\Miniconda36-x64
- PYTHON_VERSION: "3.7"
MINICONDA_VERSION: C:\Miniconda37-x64
- PYTHON_VERSION: "3.8.10"
MINICONDA_VERSION: C:\Miniconda38-x64
# For Python 3.8, we need a different image, check out available pre-installed Python
# and Visual Studio versions: https://www.appveyor.com/docs/linux-images-software/
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
init:
- cmd: echo %PYTHON_VERSION% %MINICONDA_VERSION%
- cmd: python -c "import struct; print(struct.calcsize('P') * 8)"
# Because we only have a single worker, we don't want to waste precious
# appveyor CI time and make other PRs wait for repeated failures in a failing
# PR. The following option cancels pending jobs in a given PR after the first
# job failure in that specific PR.
matrix:
fast_finish: true
# Not a .NET project, we build sktime in the install step instead
build: false
install:
# If there is a newer build queued for the same PR, cancel this one.
# The AppVeyor 'rolling builds' option is supposed to serve the same
# purpose but is problematic because it tends to cancel builds pushed
# directly to main instead of just PR builds.
# credits: JuliaLang developers.
- ps:
if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod `
https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=500).builds | `
Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { `
throw "There are newer queued builds for this pull request, failing early." }
# Set up conda environment
- cmd: SET PATH=%MINICONDA_VERSION%;%MINICONDA_VERSION%\Scripts;%PATH%
- cmd: conda config --set always_yes true
- cmd: conda update --quiet -c anaconda conda
- cmd: conda create --name testenv python=%PYTHON_VERSION%
# Install requirements from inside conda environment
- cmd: activate testenv
- cmd: conda install -c conda-forge "matplotlib>=3.3.2" "seaborn>=0.11.0" "tsfresh>=0.17.0" "hcrystalball>=0.1.9" "stumpy>=1.5.1,<=1.9.2" "numba==0.53" "numpy>=1.19.3" "pandas>=1.1.0,<1.2" "statsmodels==0.12.1" "scikit-learn>=0.23.0" "scikit-posthocs>=0.6.5" "pystan>=2.14,<3.0" "deprecated>=1.2.13" "fbprophet>=0.7.1"
- cmd: pip install -r %REQUIREMENTS%
# List installed environment
- cmd: python --version
- cmd: conda list
# Build wheels
# some packages (e.g. prophet, pystan) use different compilers during
# installation, so we here have to be more explicit about which compiler
# to use for sktime
- cmd: python setup.py build_ext --compiler=msvc
- cmd: python setup.py bdist_wheel bdist_wininst
- ps: ls dist # list built artifacts
# Install the built wheel package to test it
- cmd: pip install --pre --no-index --no-deps --find-links dist/ sktime
test_script:
# If there is a newer build queued for the same PR, cancel this one.
- ps:
if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod `
https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=500).builds | `
Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { `
throw "There are newer queued builds for this pull request, failing early." }
# Change to a non-source folder to make sure we run the tests on the
# installed library.
- ps: mkdir %TEST_DIR%
- ps: cp setup.cfg %TEST_DIR%
- ps: cd %TEST_DIR%
- ps: >-
if (Test-Path variable:global:CHECK_WARNINGS) {
$env:PYTEST_ARGS = "-Werror::DeprecationWarning -Werror::FutureWarning -Werror::UserWarning"
} else {
$env:PYTEST_ARGS = ""
}
# Run tests
- cmd: pytest --showlocals --durations=20 %PYTEST_ARGS% --pyargs sktime
# Move back to the project folder
- ps: cd ..
artifacts:
# Archive the generated wheel package in the ci.appveyor.com build report.
- path: 'dist\*.whl'
name: wheels
# deploy wheels to PyPI on tagged commits
deploy_script:
- ps: ls dist
- ps: >-
if ( ($env:APPVEYOR_REPO_BRANCH -eq 'main') -and ($env:APPVEYOR_REPO_TAG -eq 'true') -and
($env:APPVEYOR_REPO_TAG_NAME -match '^v[0-9]+\.[0-9]+\.[0-9]+') ) {
Write-Output ("Deploying tag: " + $env:APPVEYOR_REPO_TAG_NAME + " to PyPI ...")
pip install --upgrade twine
twine upload --skip-existing --non-interactive --verbose dist/*.whl
Write-Output ("Successfully uploaded wheels to PyPI.")
} else {
Write-Output ("Skipped deployment to PyPI as this is not a tagged commit.")
}