-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
145 lines (128 loc) · 3.34 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
image: docker.km3net.de/base/python:3
variables:
GIT_SUBMODULE_STRATEGY: recursive
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
DOCKER_HOST: tcp://docker:2375
DOCKER_DRIVER: overlay2
CONTAINER_TEST_IMAGE: docker.km3net.de/simulation/km3buu:$CI_COMMIT_REF_SLUG
CONTAINER_RELEASE_IMAGE: docker.km3net.de/simulation/km3buu:$CI_COMMIT_TAG
CONTAINER_LATEST_IMAGE: docker.km3net.de/simulation/km3buu:latest
SINGULARITY_RELEASE_IMAGE: km3buu_${CI_COMMIT_TAG}.sif
cache:
paths:
- .cache/pip
- venv/
- GiBUU.simg
key: "$CI_COMMIT_REF_SLUG"
stages:
- docker
- release
- test
- coverage
- reset_cache_image
- doc
reset_test_image:
stage: reset_cache_image
cache:
paths:
- GiBUU.simg
script:
- rm -f GiBUU.simg
only:
- tags
.virtualenv_template: &virtualenv_definition |
python -V
export SETUPTOOLS_USE_DISTUTILS=stdlib
pip install virtualenv
virtualenv venv
source venv/bin/activate
pip install -U pip setuptools yapf setuptools_scm
make install-dev
pip list
date
.junit_template: &junit_definition
artifacts:
reports:
junit: "reports/junit*.xml"
test:
image: python:3.10
stage: test
script:
- *virtualenv_definition
- make test
<<: *junit_definition
code-style:
image: python:3.10
stage: test
script:
- *virtualenv_definition
- yapf -r -d -e "venv" ./km3buu
allow_failure: true
coverage:
image: python:3.10
stage: coverage
script:
- *virtualenv_definition
- "make test-cov|grep TOTAL| awk '{printf \"COVERAGE: %.2f%%\", (1-$3/$2)*100 }'"
coverage: '/COVERAGE:\s*([0-9]*\.[0-9]*%)/'
# - make test-cov
# coverage: '/TOTAL.+ ([0-9]{1,3}%)/'
artifacts:
paths:
- reports/coverage
docker:
image: docker:stable
services:
- docker:dind
stage: docker
script:
- docker build --pull -t $CONTAINER_TEST_IMAGE .
- docker push $CONTAINER_TEST_IMAGE
tags:
- docker
only:
- tags
pages:
image: docker.km3net.de/base/python:3.10
stage: doc
script:
- *virtualenv_definition
- cd doc && make clean && cd ..
- make doc
- mv doc/_build/html public/
- mv reports/coverage public/coverage
artifacts:
paths:
- public
cache: {}
only:
- tags
- master
- python
release-docker:
image: docker:stable
services:
- docker:dind
stage: release
script:
- docker pull $CONTAINER_TEST_IMAGE
- docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE
- docker tag $CONTAINER_TEST_IMAGE $CONTAINER_LATEST_IMAGE
- docker push $CONTAINER_RELEASE_IMAGE
- docker push $CONTAINER_LATEST_IMAGE
tags:
- docker
only:
- tags
release-singularity:
image: docker.km3net.de/base/singularity:3.6.2
stage: release
script:
- singularity build $SINGULARITY_RELEASE_IMAGE docker://$CONTAINER_RELEASE_IMAGE
- du -sh $SINGULARITY_RELEASE_IMAGE
- mkdir -p ~/.ssh && ssh-keyscan -H -t rsa $KM3NET_SFTP_HOST >> ~/.ssh/known_hosts
- lftp -u $KM3NET_SFTP_USER,$KM3NET_SFTP_PASSWORD sftp://$KM3NET_SFTP_HOST -e "set ssl:verify-certificate no; cd singularity/; put $SINGULARITY_RELEASE_IMAGE; bye"
dependencies:
- release-docker
only:
- tags