-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
127 lines (108 loc) · 2.73 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
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
DOCKER_HOST: tcp://docker:2375
DOCKER_DRIVER: overlay2
CONTAINER_TEST_IMAGE: docker.km3net.de/test/orcasong:$CI_COMMIT_REF_SLUG
CONTAINER_RELEASE_IMAGE: docker.km3net.de/orcasong:$CI_COMMIT_TAG
CONTAINER_LATEST_IMAGE: docker.km3net.de/orcasong:latest
SINGULARITY_RELEASE_IMAGE: orcasong_${CI_COMMIT_TAG}.sif
stages:
- test
- coverage
- doc
- docker
- release
- singularity
cache:
paths:
- .cache/pip
- venv/
key: "$CI_COMMIT_REF_SLUG"
.virtualenv_template: &virtualenv_definition |
python -V
pip install -U pip setuptools wheel virtualenv
virtualenv venv
source venv/bin/activate
make install-dev
test:
image: docker.km3net.de/base/python:3.6
stage: test
script:
- *virtualenv_definition
- pip list
- make test
coverage:
image: docker.km3net.de/base/python:3.6
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]*%)/'
artifacts:
paths:
- reports/coverage
pages:
image: docker.km3net.de/base/python:3.6
stage: doc
script:
- *virtualenv_definition
- cd docs && make html
- mv _build/html/ ../public/
- cd .. && mv reports/coverage public/coverage
artifacts:
paths:
- public
cache: {}
only:
- tags
- master
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
pypi:
image: docker.km3net.de/base/python:3.6
stage: release
cache: {}
script:
- pip install -U twine
- python setup.py sdist
- twine upload dist/*
only:
- tags
release-image:
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
singularity:
image: docker.km3net.de/base/singularity:3.1
stage: singularity
script:
- singularity --version
- singularity build $SINGULARITY_RELEASE_IMAGE Singularity
- apt-get update -qy
- apt-get install -qy lftp
- lftp -u $KM3NET_SFTP_USER,$KM3NET_SFTP_PASSWORD sftp://$KM3NET_SFTP_HOST -e "set sftp:auto-confirm yes; set ssl:verify-certificate no; cd singularity/; put $SINGULARITY_RELEASE_IMAGE; bye"
tags:
- docker
only:
- tags