forked from DTUWindEnergy/PyWake
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
206 lines (189 loc) · 6.07 KB
/
.gitlab-ci.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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
image: continuumio/anaconda3
stages:
- test
- test_plugins
- build
- deploy
# ===== TEST PyWake debian=====
test_PyWake: # name the job what we like
image: continuumio/anaconda3
stage: # build, test, deploy defined by default [2]
test
script:
- pip install -e .[test] --timeout 3600 --default-timeout=3600
- pytest
tags: # only runners with this tag can do the job [3]
- ci-ubuntu
## ===== TEST PyWake debian=====
#test_PyWake_python3.6: # name the job what we like
# image: continuumio/anaconda3:5.2.0
# stage: # build, test, deploy defined by default [2]
# test
# script:
# - apt update
# - apt install libgl1-mesa-glx -y
# - python -m pip install --upgrade --force-reinstall pip
# - pip install tensorflow --user
# - pip install -e .[test] --timeout 3600 --default-timeout=3600
# - python -c "from pathlib import Path; Path('matplotlibrc').write_text('backend'+chr(58)+' Agg')"
# - pytest
# tags: # only runners with this tag can do the job [3]
# - ci-ubuntu
# ===== Check code style =====
check_code_style: # name the job what we like
stage: # build, test, deploy defined by default [2]
test
script:
- pip install -e . --user
- pycodestyle --ignore=E501,W504,E741 py_wake
tags: # only runners with this tag can do the job [3]
- ci-ubuntu
# ===== TEST PyWake on Windows =====
test_PyWake_windows: # name the job what we like
stage: # build, test, deploy defined by default [2]
test
coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
script: # runs on windows machine due to tag below
- conda init powershell
- "if (test-path $PROFILE.CurrentUserAllHosts) { & $PROFILE.CurrentUserAllHosts}"
- conda activate py38
- pip install -e .[test] --no-deps
- pytest --cov-report term-missing:skip-covered --cov=py_wake --cov-config .coveragerc
tags: # tag for shared runner on windows machine
- ANMH_old
# ===== Trigger PyWakePark pipeline =====
trigger_pywake_park_test:
stage: test_plugins
variables:
TRIGGER_BRANCH: $CI_COMMIT_REF_NAME
trigger:
project: TOPFARM/cuttingedge/pywake/pywake_park
strategy: depend
only:
- schedules
# ===== Trigger PyWakeEllipSys pipeline =====
trigger_pywake_ellipsys_test:
stage: test_plugins
variables:
TRIGGER_BRANCH: $CI_COMMIT_REF_NAME
trigger:
project: TOPFARM/cuttingedge/pywake/pywake_ellipsys
strategy: depend
only:
- schedules
# ===== Trigger TriggerHub pipeline =====
trigger_hub_test:
stage: test
variables:
TRIGGER_BRANCH: $CI_COMMIT_REF_NAME
trigger:
project: TOPFARMPrivate/triggerhub/pywaketriggers
strategy: depend
only:
- master
# ===== build documentation =====
pages: # "pages" is a job specifically for GitLab pages [1]
stage: # build, test, deploy defined by default [2]
deploy
script: # use sphinx to build docs, move to public page
- apt-get update
- apt-get -y install make pandoc graphviz
- pip install --upgrade pip
- pip install pypandoc
- pip install sphinx --upgrade
- pip install nbsphinx --upgrade
- pip install nbconvert --upgrade
- pip install git+https://gitlab.windenergy.dtu.dk/TOPFARM/TopFarm2.git
- pip install -e .[test]
- cd docs/validation_report
- python generate_validation_figures.py
- cd report
- apt-get install -y texlive-latex-extra
- pdflatex validation_report.tex
- bibtex validation_report.aux
- pdflatex validation_report.tex
- pdflatex validation_report.tex
- cd ../../
- pwd
- make html
#- make latexpdf
- cd ../; mv docs/build/html public/
artifacts: # required for GitLab pages [1]
paths:
- public
only: # only run for these branches
- /^test_docdeploy.*/
- master
tags: # only runners with this tag can do the job [3]
- ci-ubuntu
pypi_linux:
stage:
deploy
only:
- tags
- test_pypi
script:
- apt-get update
- apt-get install -y pandoc
- pip install --upgrade pip
- pip install pypandoc
- pip install -e .[test] --upgrade
- python -c 'from git_utils import get_tag; get_tag(verbose=True)'
- python -m pip install -U setuptools wheel
- python setup.py sdist bdist_wheel
- python -m pip install -U twine
- python -c 'from git_utils import rename_dist_file; rename_dist_file()'
- twine upload dist/* -u $TWINE_USERNAME -p $TWINE_PASSWORD
#- twine upload --repository-url https://test.pypi.org/legacy/ dist/* -u $TWINE_USERNAME -p $TWINE_PASSWORD # for testing purposes
tags:
- ci-ubuntu
build_conda:
stage: build
image: condaforge/mambaforge:latest
dependencies: []
script:
- export VERSION=`git describe --tags --always | sed 's/v//' | sed 's/-/.dev/' | sed 's/-/_/'`
- mamba install -c conda-forge --override-channels -y boa conda-verify
- conda mambabuild --no-anaconda-upload -c conda-forge --override-channels --output-folder ./conda_channel ./recipe
artifacts:
untracked: false
expire_in: "3 days"
paths: ["conda_channel/noarch/py_wake*.tar.bz2"]
rules:
- if: $CI_COMMIT_TAG && $CI_COMMIT_REF_PROTECTED
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: manual
allow_failure: true
changes:
- setup.py
- recipe/meta.yaml
- when: never
tags:
- ci-ubuntu
deploy_conda:
stage: deploy
image: docker:latest
dependencies: ["build_conda"]
needs: ["build_conda"]
script:
- CONDA_PKG=`basename ./conda_channel/noarch/py_wake*.tar.bz2`
- cp -p ./conda_channel/noarch/$CONDA_PKG /conda_channel_open/noarch/${CONDA_PKG}.tmp
- chown 1000:1000 /conda_channel_open/noarch/${CONDA_PKG}.tmp
- mv /conda_channel_open/noarch/${CONDA_PKG}.tmp /conda_channel_open/noarch/${CONDA_PKG}
rules:
- if: $CI_COMMIT_TAG && $CI_COMMIT_REF_PROTECTED
tags:
- conda_channel
# current
# pypi_windows:
# stage:
# deploy
# only:
# - tags
# - test_pypi
# script:
# - c:/Anaconda3/envs/pyTopfarm/python.exe setup.py bdist_wheel
# - twine upload dist/* -u %TWINE_USERNAME% -p %TWINE_PASSWORD%
# #- twine upload --repository-url https://test.pypi.org/legacy/ dist/* -u %TWINE_USERNAME% -p %TWINE_PASSWORD% # for testing purposes
# tags:
# - CPAV_old_PC