-
Notifications
You must be signed in to change notification settings - Fork 2
/
.gitlab-ci.yml
125 lines (113 loc) · 2.74 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
variables:
DOCKER_IMAGE: $CI_REGISTRY_IMAGE
DOCKER_TAG: $CI_PIPELINE_ID
stages:
- build_image
- setup
- test
- deploy
- early_reindex
- integration_test
- teardown
- manual
- sell_unused_slots
build_image:
# Build an image containing the build prerequisites (python, terraform, etc).
# This lets us exploit Docker's layer caching to speed up the build. The
# image will only be rebuilt after changes to the Dockerfile,
# requirements*.txt, common.mk and the Makefile.
stage: build_image
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY_IMAGE
- make docker_dev_push .gitlab.env
artifacts:
reports:
dotenv: .gitlab.env
.base:
image: $BUILD_IMAGE
before_script:
- cp -vR /etc/gitlab/azul/* . # Copy files like environment.local into the build directory.
- source /build/.venv/bin/activate
- pip list
- deployment=$(PYTHONPATH=src python scripts/check_branch.py --print || echo sandbox)
- (cd deployments && ln -snf ${deployment} .active)
- source environment
- status_context="gitlab/${GITLAB_INSTANCE_NAME}/${AZUL_DEPLOYMENT_STAGE}"
- make clean
dependencies:
- build_image
setup:
extends: .base
stage: setup
script:
- python scripts/github_status_check.py "${status_context}" pending
except:
- schedules
test:
extends: .base
stage: test
script:
- make format # Any ill-formatted sources, ...
- test "$deployment" != sandbox || make requirements_update # ... stale transitive dependencies ...
- make openapi # ... or changes to the canned OpenAPI definition document ...
- make check_clean # would dirty up the working copy and fail the build.
- make pep8
- AZUL_DEBUG=0 make test
except:
- schedules
deploy:
extends: .base
stage: deploy
script:
- make -C terraform check_schema
- make auto_deploy
- make create
except:
- schedules
integration_test:
extends: .base
stage: integration_test
script:
- make integration_test
except:
- schedules
on_success:
extends: .base
stage: teardown
when: on_success
script:
- python scripts/github_status_check.py "${status_context}" success
except:
- schedules
on_failure:
extends: .base
stage: teardown
when: on_failure
script:
- python scripts/github_status_check.py "${status_context}" failure
except:
- schedules
early_reindex:
extends: .base
stage: early_reindex
when: manual
except:
- schedules
script:
- make reindex
timeout: 24h
reindex:
extends: .base
stage: manual
when: manual
except:
- schedules
script:
- make reindex
timeout: 24h
sell_unused_slots:
extends: .base
only:
- schedules
script:
- python3 scripts/sell_unused_slots.py