forked from gavinying/modpoll
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
111 lines (98 loc) · 2.36 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
# Global --------------------------
stages:
- build
- test
- deploy
- document
- deploy-docker
variables:
APP_NAME: "modpoll"
APP_TAG: "${CI_COMMIT_TAG}"
PYTHON_TAG: "3.8-slim"
PIP_CACHE_DIR: "${APP_TAG}/.cache/pip"
cache:
key:
files:
- .gitlab-ci.yml
# prefix: ${CI_JOB_NAME}
paths:
- .venv
- .cache/pip
- poetry.lock
image: helloysd/poetry:1.3.2-python3.8-slim
# build jobs ------------------------
build-module:
stage: build
script:
- poetry update
- poetry install --no-root
- poetry build
artifacts:
paths:
- dist
only:
- master
- merge_requests
- external_pull_requests
- tags
# test jobs ------------------------
pytest:
stage: test
script:
- poetry install
# - pip install dist/*.whl
- poetry run pytest
only:
- master
- merge_requests
- external_pull_requests
- tags
# document jobs ------------------------
pages:
stage: document
script:
- poetry run sphinx-build -b html docs public
artifacts:
paths:
- public
only:
- master
- merge_requests
- external_pull_requests
- tags
# deploy jobs ------------------------
pypi:
stage: deploy
script:
- poetry config pypi-token.pypi ${PYPI_TOKEN}
- poetry publish
only:
- tags
dockerhub:
stage: deploy-docker
variables:
# required by docker:dind
DOCKER_VERSION: "19.03.12"
DOCKER_HOST: tcp://docker:2375/
DOCKER_TLS_CERTDIR: ""
DOCKER_DRIVER: overlay2
DOCKER_CLI_EXPERIMENTAL: enabled
image: helloysd/docker-buildx:$DOCKER_VERSION
services:
- docker:$DOCKER_VERSION-dind
before_script:
# adjusted due to gitlab ci's issue: https://github.com/docker/buildx/issues/584
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes; docker buildx create --name mybuilder --use
# variables defined in gitlab
- echo "$DOCKER_REGISTRY_PASSWORD" | docker login -u "$DOCKER_REGISTRY_USERNAME" --password-stdin "$DOCKER_REGISTRY"
script:
- |
docker buildx build \
--build-arg "APP_TAG=$APP_TAG" \
--build-arg "PYTHON_TAG=$PYTHON_TAG" \
--platform linux/amd64,linux/arm64,linux/arm/v7 \
--tag "$DOCKER_REGISTRY/$DOCKER_REGISTRY_USERNAME/$APP_NAME:$APP_TAG" \
--tag "$DOCKER_REGISTRY/$DOCKER_REGISTRY_USERNAME/$APP_NAME:latest" \
--push .
only:
- tags