.gitlab-ci.yml 6.07 KB
Newer Older
Martin Bauer's avatar
Martin Bauer committed
1
2
3
4
5
6
7
8
9
10
11
12
13
stages:
  - test
  - deploy


# --------------------------  Tests ------------------------------------------------------------------------------------

# Normal test - runs on every commit all but "long run" tests
tests-and-coverage:
  stage: test
  except:
    variables:
      - $ENABLE_NIGHTLY_BUILDS
14
  image: i10git.cs.fau.de:5005/pycodegen/pycodegen/full
Martin Bauer's avatar
Martin Bauer committed
15
  script:
16
17
    - env
    - pip list
Martin Bauer's avatar
Martin Bauer committed
18
19
20
21
    - export NUM_CORES=$(nproc --all)
    - mkdir -p ~/.config/matplotlib
    - echo "backend:template" > ~/.config/matplotlib/matplotlibrc
    - mkdir public
Martin Bauer's avatar
Martin Bauer committed
22
    - pip install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils
23
24
    - env
    - pip list
25
26
    - py.test -v -n $NUM_CORES --cov-report html --cov-report term --cov=. -m "not longrun" --junitxml=report.xml
    - python3 -m coverage xml
Martin Bauer's avatar
Martin Bauer committed
27
28
  tags:
    - docker
Markus Holzer's avatar
Markus Holzer committed
29
    - cuda11
Martin Bauer's avatar
Martin Bauer committed
30
31
32
33
34
    - AVX
  artifacts:
    when: always
    paths:
      - coverage_report
35
36
37
    reports:
      cobertura: coverage.xml
      junit: report.xml
Martin Bauer's avatar
Martin Bauer committed
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
# pipeline with latest python version
latest-python:
  stage: test
  except:
    variables:
      - $ENABLE_NIGHTLY_BUILDS
  image: i10git.cs.fau.de:5005/pycodegen/pycodegen/latest_python
  before_script:
    - pip install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils
  script:
    - env
    - pip list
    - export NUM_CORES=$(nproc --all)
    - mkdir -p ~/.config/matplotlib
    - echo "backend:template" > ~/.config/matplotlib/matplotlibrc
    - mkdir public
    - py.test -v -n $NUM_CORES -m "not longrun" --junitxml=report.xml
  tags:
    - docker
    - AVX
  artifacts:
    when: always
    reports:
      junit: report.xml

Martin Bauer's avatar
Martin Bauer committed
64
65
66
67
68
69
# Nightly test  - runs "long run" jobs only
test-longrun:
  stage: test
  only:
    variables:
      - $ENABLE_NIGHTLY_BUILDS
70
  image: i10git.cs.fau.de:5005/pycodegen/pycodegen/full
Martin Bauer's avatar
Martin Bauer committed
71
  script:
72
73
    - env 
    - pip list
Martin Bauer's avatar
Martin Bauer committed
74
75
76
    - export NUM_CORES=$(nproc --all)
    - mkdir -p ~/.config/matplotlib
    - echo "backend:template" > ~/.config/matplotlib/matplotlibrc
Martin Bauer's avatar
Martin Bauer committed
77
    - pip install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils
78
    - py.test -v -n $NUM_CORES --cov-report html --cov-report term --cov=. --junitxml=report.xml
Martin Bauer's avatar
Martin Bauer committed
79
80
  tags:
    - docker
Markus Holzer's avatar
Markus Holzer committed
81
    - cuda11
Martin Bauer's avatar
Martin Bauer committed
82
83
    - AVX
  artifacts:
84
    when: always
Martin Bauer's avatar
Martin Bauer committed
85
86
    paths:
      - coverage_report
87
88
    reports:
      junit: report.xml
Martin Bauer's avatar
Martin Bauer committed
89
90
91
92
93
94
95
96
97
98

# Minimal tests in windows environment
minimal-windows:
  stage: test
  except:
    variables:
      - $ENABLE_NIGHTLY_BUILDS
  tags:
    - win
  script:
99
100
    - export NUM_CORES=$(nproc --all)
    - export MPLBACKEND=Agg
Martin Bauer's avatar
Martin Bauer committed
101
    - source /cygdrive/c/Users/build/Miniconda3/Scripts/activate
Markus Holzer's avatar
Markus Holzer committed
102
    - source activate pystencils
Martin Bauer's avatar
Martin Bauer committed
103
    - pip install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils
104
    - env
Markus Holzer's avatar
Markus Holzer committed
105
    - pip list
Martin Bauer's avatar
Martin Bauer committed
106
    - python -c "import numpy"
107
    - py.test -v -n $NUM_CORES -m "not (notebook or longrun)"
Martin Bauer's avatar
Martin Bauer committed
108

109
ubuntu:
Martin Bauer's avatar
Martin Bauer committed
110
111
112
113
  stage: test
  except:
    variables:
      - $ENABLE_NIGHTLY_BUILDS
114
  image: i10git.cs.fau.de:5005/pycodegen/pycodegen/ubuntu
115
116
117
  before_script:
    - apt-get -y remove python3-sympy
    - ln -s /usr/include/locale.h /usr/include/xlocale.h
Markus Holzer's avatar
Markus Holzer committed
118
    - pip3 install `grep -Eo 'sympy[>=]+[0-9\.]+' setup.py | sed 's/>/=/g'`
119
120
121
    - pip3 install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils
  script:
    - export NUM_CORES=$(nproc --all)
122
123
    - mkdir -p ~/.config/matplotlib
    - echo "backend:template" > ~/.config/matplotlib/matplotlibrc
124
125
    - env
    - pip3 list
126
    - pytest-3 -v -n $NUM_CORES -m "not longrun" --junitxml=report.xml
Martin Bauer's avatar
Martin Bauer committed
127
128
  tags:
    - docker
Markus Holzer's avatar
Markus Holzer committed
129
    - cuda11
130
131
132
133
  artifacts:
    when: always
    reports:
      junit: report.xml
Martin Bauer's avatar
Martin Bauer committed
134
135
136
137
138
139

minimal-conda:
  stage: test
  except:
    variables:
      - $ENABLE_NIGHTLY_BUILDS
140
  image: i10git.cs.fau.de:5005/pycodegen/pycodegen/minimal_conda
Martin Bauer's avatar
Martin Bauer committed
141
  script:
Martin Bauer's avatar
Martin Bauer committed
142
    - pip install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils
Martin Bauer's avatar
Martin Bauer committed
143
144
145
146
    - python setup.py quicktest
  tags:
    - docker

147
148
149
150
pycodegen-integration:
  image: i10git.cs.fau.de:5005/pycodegen/pycodegen/full
  stage: test
  when: manual
Markus Holzer's avatar
Markus Holzer committed
151
  allow_failure: true
152
  script:
153
154
    - env
    - pip list
155
156
157
158
159
160
    - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pycodegen.git
    - cd pycodegen
    - git submodule sync --recursive
    - git submodule update --init --recursive
    - git submodule foreach git fetch origin   # compare the latest master version!
    - git submodule foreach git reset --hard origin/master
Markus Holzer's avatar
Markus Holzer committed
161
162
163
164
165
166
167
    - cd lbmpy
    - git remote add test $CI_REPOSITORY_URL
    - git fetch test
    - git reset --hard $CI_COMMIT_SHA
    - cd ..
    - pip install -e pystencils/
    - pip install -e lbmpy/
168
    - ./install_walberla.sh
Frederik Hennig's avatar
Frederik Hennig committed
169
170
171
    # build all integration tests
    - cd walberla/build/
    - make -j $NUM_CORES MicroBenchmarkGpuLbm LbCodeGenerationExample
172
173
174
175
    - cd apps/benchmarks/UniformGridGPU
    - make -j $NUM_CORES
    - cd ../UniformGridGenerated
    - make -j $NUM_CORES
Markus Holzer's avatar
Markus Holzer committed
176

177
178
  tags:
    - docker
Markus Holzer's avatar
Markus Holzer committed
179
    - cuda11
180
    - AVX
Martin Bauer's avatar
Martin Bauer committed
181
182
183
184
185
186
187
188
189

# -------------------- Linter & Documentation --------------------------------------------------------------------------


flake8-lint:
  stage: test
  except:
    variables:
      - $ENABLE_NIGHTLY_BUILDS
190
  image: i10git.cs.fau.de:5005/pycodegen/pycodegen/full
Martin Bauer's avatar
Martin Bauer committed
191
192
193
194
  script:
    - flake8 lbmpy
  tags:
    - docker
Markus Holzer's avatar
Markus Holzer committed
195
    - cuda11
Martin Bauer's avatar
Martin Bauer committed
196
197
198
199


build-documentation:
  stage: test
200
  image: i10git.cs.fau.de:5005/pycodegen/pycodegen/full
Martin Bauer's avatar
Martin Bauer committed
201
202
  script:
    - export PYTHONPATH=`pwd`
Martin Bauer's avatar
Martin Bauer committed
203
    - pip install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils
Martin Bauer's avatar
Martin Bauer committed
204
    - mkdir html_doc
Markus Holzer's avatar
Markus Holzer committed
205
    - sphinx-build -W -b html doc html_doc
Martin Bauer's avatar
Martin Bauer committed
206
207
  tags:
    - docker
Markus Holzer's avatar
Markus Holzer committed
208
    - cuda11
Martin Bauer's avatar
Martin Bauer committed
209
210
211
212
213
214
  artifacts:
    paths:
      - html_doc


pages:
215
  image: i10git.cs.fau.de:5005/pycodegen/pycodegen/full
Martin Bauer's avatar
Martin Bauer committed
216
217
218
219
220
221
222
223
224
225
226
227
  stage: deploy
  script:
    - ls -l
    - mv coverage_report html_doc
    - mv html_doc public  # folder has to be named "public" for gitlab to publish it
  artifacts:
    paths:
      - public
  tags:
    - docker
  only:
    - master@pycodegen/lbmpy