forked from vstconsulting/vstutils
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
120 lines (107 loc) · 2.93 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
default:
image: vstconsulting/images:build
cache: &global_cache
paths:
- node_modules/
policy: pull
variables:
GET_SOURCES_ATTEMPTS: 3
ARTIFACT_DOWNLOAD_ATTEMPTS: 3
RESTORE_CACHE_ATTEMPTS: 3
DJANGO_LOG_LEVEL: 'CRITICAL'
TOX_ARGS: "--workdir /cache/.tox_vstutils_${CI_BUILD_REF_NAME}"
CC: "ccache gcc"
UWSGI_PROFILE: "minimal"
stages:
- code_standarts
- test
- release
.branch_tests_template: &branch_tests
stage: test
image: vstconsulting/images:build
variables:
TOX_ENVS: "flake,pylint,py36-django-install,py37-django-install"
before_script:
- if [ "${CI_BUILD_REF_NAME}" != "master" -a "${CI_BUILD_REF_NAME}" != "developer" ]; then export TOX_ARGS="--workdir /tmp/.tox_vstutils_${CI_BUILD_REF_NAME}"; fi
script:
- tox -e $TOX_ENVS $TOX_ARGS
rules:
- if: '$CI_COMMIT_BRANCH == "master" || $CI_COMMIT_BRANCH =~ /^release_/'
when: on_success
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" || $CI_PIPELINE_SOURCE == "external_pull_request_event"'
when: on_success
- if: '$CI_PIPELINE_SOURCE == "web" && $CI_COMMIT_TAG == null'
when: on_success
- when: never
code_style:
<<: *branch_tests
stage: code_standarts
parallel:
matrix:
- TOX_ENVS:
- flake
- mypy
- pylint
js_style:
<<: *branch_tests
stage: code_standarts
cache:
<<: *global_cache
policy: pull-push
variables:
TOX_ENVS: "js_style"
functional_test:
<<: *branch_tests
parallel:
matrix:
- TOX_ENVS:
- py36-django31-install
- py38-django22-coverage
js_tests:
<<: *branch_tests
needs: ["js_style"]
coverage: '/^Statements\s*:\s*([^%]+)/'
variables:
TOX_ENVS: "js_tests"
pages:
<<: *branch_tests
stage: release
variables:
TOX_ENVS: "builddoc"
script:
- tox -e $TOX_ENVS $TOX_ARGS
- mv -v doc/_build/html public
artifacts:
paths:
- public
rules:
- if: '$CI_COMMIT_BRANCH == "master"'
when: on_success
- when: never
release:
stage: release
cache: {}
rules:
- if: '$CI_COMMIT_BRANCH == "master" && $GIT_ACCESS_USER && $GIT_ACCESS_PASSWORD'
when: on_success
- if: '$CI_COMMIT_BRANCH =~ /^release_/ && $GIT_ACCESS_USER && $GIT_ACCESS_PASSWORD'
when: on_success
- when: never
before_script:
- url_host=`echo "${CI_REPOSITORY_URL}" | sed -e "s/https:\/\/gitlab-ci-token:.*@//g"`
- git config user.name "${GITLAB_USER_NAME}"
- git config user.email "${GITLAB_USER_EMAIL}"
- git remote set-url origin "https://${GIT_ACCESS_USER}:${GIT_ACCESS_PASSWORD}@${url_host}"
script:
- bash autorelease.sh
release_pypi:
stage: release
image: vstconsulting/images:build
rules:
- if: '$CI_COMMIT_TAG && $PYPI_UPLOAD_PASSWORD && $PYPI_UPLOAD_NAME'
when: on_success
- when: never
script:
- tox -e build
- twine upload -u ${PYPI_UPLOAD_NAME} -p ${PYPI_UPLOAD_PASSWORD} $(find dist/*.{tar.gz,whl})
allow_failure: true