1
1
stages :
2
2
- test
3
3
- docker-build
4
- - oc-tag
5
4
- deploy
6
5
7
6
# Use the acc-py-devtools templates found at
@@ -11,39 +10,61 @@ include:
11
10
file : acc_py_devtools/templates/gitlab-ci/python.yml
12
11
13
12
variables :
14
- project_name : caimira
15
-
13
+ PY_VERSION : " 3.11"
16
14
17
15
# ###################################################################################################
18
- # Test code
16
+ # Test code - CAiMIRA (model) and CERN CAiMIRA (CERN's UI)
19
17
20
- # A full installation of CAiMIRA, tested with pytest.
21
- test_install :
22
- extends : .acc_py_full_test
18
+ .test-base :
19
+ image : registry.cern.ch/docker.io/library/python:${PY_VERSION}
20
+ stage : test
21
+ except :
22
+ - live/caimira-test # do not run tests on live/caimira-test branch
23
23
24
+ .test-run :
25
+ extends :
26
+ - .test-base
27
+ script :
28
+ - cd ./${PROJECT_ROOT}
29
+ - pip install -e .[test]
30
+ - python -m pytest
24
31
25
- # A development installation of CAiMIRA tested with pytest.
26
- test_dev :
27
- extends : .acc_py_dev_test
32
+ test-caimira-py311 :
33
+ variables :
34
+ PROJECT_ROOT : " caimira"
35
+ extends :
36
+ - .test-run
28
37
38
+ test-cern-caimira-py311 :
39
+ before_script :
40
+ - cd ./caimira
41
+ - pip install -e .[test]
42
+ - cd ../
43
+ variables :
44
+ PROJECT_ROOT : " cern_caimira"
45
+ extends :
46
+ - .test-run
29
47
30
- # A development installation of CAiMIRA tested with pytest.
31
- test_dev-39 :
48
+ test-caimira-py39 :
32
49
variables :
33
50
PY_VERSION : " 3.9"
34
- extends : .acc_py_dev_test
51
+ PROJECT_ROOT : " caimira"
52
+ extends :
53
+ - test-caimira-py311
35
54
55
+ test-cern-caimira-py39 :
56
+ variables :
57
+ PY_VERSION : " 3.9"
58
+ PROJECT_ROOT : " cern_caimira"
59
+ extends :
60
+ - test-cern-caimira-py311
36
61
37
62
# ###################################################################################################
38
63
# Test OpenShift config
39
64
40
65
.test_openshift_config :
41
66
stage : test
42
- rules :
43
- - if : ' $OC_TOKEN && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $BRANCH'
44
- allow_failure : true # The branch must represent what is deployed. FIXME: change to true because of a diff between ConfigMaps
45
- - if : ' $OC_TOKEN && $CI_MERGE_REQUEST_EVENT_TYPE != "detached"'
46
- allow_failure : true # Anything other than the branch may fail without blocking the pipeline.
67
+ allow_failure : true
47
68
image : registry.cern.ch/docker.io/mambaorg/micromamba
48
69
before_script :
49
70
- micromamba create --yes -p $HOME/env python=3.9 ruamel.yaml wget -c conda-forge
@@ -63,7 +84,9 @@ test_dev-39:
63
84
paths :
64
85
- ./app-config/openshift/${CAIMIRA_INSTANCE}/actual
65
86
- ./app-config/openshift/${CAIMIRA_INSTANCE}/expected
66
-
87
+ only :
88
+ - master
89
+ - live/caimira-test # do not run tests on live/caimira-test branch
67
90
68
91
check_openshift_config_test :
69
92
extends : .test_openshift_config
@@ -73,35 +96,29 @@ check_openshift_config_test:
73
96
OC_SERVER : https://api.paas.okd.cern.ch
74
97
OC_TOKEN : " ${OPENSHIFT_CAIMIRA_TEST_CONFIG_CHECKER_TOKEN}"
75
98
76
-
77
- check_openshift_config_prod :
78
- extends : .test_openshift_config
79
- variables :
80
- CAIMIRA_INSTANCE : ' caimira-prod'
81
- BRANCH : ' master'
82
- OC_SERVER : https://api.paas.okd.cern.ch
83
- OC_TOKEN : " ${OPENSHIFT_CAIMIRA_PROD_CONFIG_CHECKER_TOKEN}"
99
+ # TODO: for prod, it should ignore the different tag in the `image` field
100
+ # check_openshift_config_prod:
101
+ # extends: .test_openshift_config
102
+ # variables:
103
+ # CAIMIRA_INSTANCE: 'caimira-prod'
104
+ # BRANCH: 'master'
105
+ # OC_SERVER: https://api.paas.okd.cern.ch
106
+ # OC_TOKEN: "${OPENSHIFT_CAIMIRA_PROD_CONFIG_CHECKER_TOKEN}"
84
107
85
108
86
109
# ###################################################################################################
87
110
# Build docker images
88
111
89
- .image_builder :
90
- # Build and push images to the openshift instance, which automatically triggers an application re-deployment.
112
+ # base
113
+ .docker-build :
91
114
stage : docker-build
92
- rules :
93
- - if : ' $CI_COMMIT_BRANCH == "live/caimira-test"'
94
- variables :
95
- IMAGE_TAG : caimira-test-latest
96
- - if : ' $CI_COMMIT_BRANCH == "master"'
97
- variables :
98
- IMAGE_TAG : caimira-prod-latest
99
115
image :
100
116
# Based on guidance at https://gitlab.cern.ch/gitlabci-examples/build_docker_image.
101
117
# The kaniko debug image is recommended because it has a shell, and a shell is required for an image to be used with GitLab CI/CD.
102
118
name : gcr.io/kaniko-project/executor:debug
103
119
entrypoint : [""]
104
120
script :
121
+ - echo "Building image for ${CI_COMMIT_REF_NAME} branch with tag ${IMAGE_TAG}"
105
122
# Prepare Kaniko configuration file
106
123
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
107
124
- echo "Building ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:latest Docker image..."
@@ -110,85 +127,95 @@ check_openshift_config_prod:
110
127
# Print the full registry path of the pushed image
111
128
- echo "Image pushed successfully to ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${IMAGE_TAG}"
112
129
113
-
114
- auth-service-image_builder :
115
- extends :
116
- - .image_builder
130
+ .docker-build-auth-service :
117
131
variables :
118
132
IMAGE_NAME : auth-service
119
133
DOCKERFILE_DIRECTORY : app-config/auth-service
120
134
DOCKER_CONTEXT_DIRECTORY : app-config/auth-service
135
+ extends : .docker-build
121
136
122
-
123
- calculator-app-image_builder :
124
- extends :
125
- - .image_builder
137
+ .docker-build-calculator-app :
126
138
variables :
127
139
IMAGE_NAME : calculator-app
128
140
DOCKERFILE_DIRECTORY : app-config/calculator-app
129
141
DOCKER_CONTEXT_DIRECTORY : " "
142
+ extends : .docker-build
130
143
131
-
132
- oci_calculator :
133
- extends : .image_builder
144
+ # on push to live/caimira-test
145
+ .docker-build-test :
134
146
variables :
135
- IMAGE_NAME : calculator
136
- DOCKERFILE_DIRECTORY : app-config/caimira-public-docker-image
137
- DOCKER_CONTEXT_DIRECTORY : " "
138
-
139
-
140
- # ###################################################################################################
141
- # Link build Docker images OpenShift <-> GitLab registry
142
-
143
- .link_docker_images_with_gitlab_registry :
144
- stage : oc-tag
145
- image : gitlab-registry.cern.ch/paas-tools/openshift-client:latest
146
- rules :
147
- - if : ' $CI_COMMIT_BRANCH == "live/caimira-test"'
148
- variables :
149
- OC_PROJECT : " caimira-test"
150
- OC_TOKEN : ${OPENSHIFT_CAIMIRA_TEST_DEPLOY_TOKEN}
151
- IMAGE_TAG : caimira-test-latest
152
- - if : ' $CI_COMMIT_BRANCH == "master"'
153
- variables :
154
- OC_PROJECT : " caimira-prod"
155
- OC_TOKEN : ${OPENSHIFT_CAIMIRA_PROD_DEPLOY_TOKEN}
156
- IMAGE_TAG : caimira-prod-latest
157
- script :
158
- - oc tag --source=docker ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${IMAGE_TAG} ${IMAGE_NAME}:latest --token ${OC_TOKEN} --server=https://api.paas.okd.cern.ch -n ${OC_PROJECT}
147
+ IMAGE_TAG : caimira-test-latest
159
148
160
- link_auth-service_with_gitlab_registry :
149
+ docker-build-auth-service-test :
161
150
extends :
162
- - .link_docker_images_with_gitlab_registry
163
- variables :
164
- IMAGE_NAME : auth-service
151
+ - .docker-build-test
152
+ - .docker-build-auth-service
153
+ only :
154
+ - live/caimira-test
165
155
166
- link_calculator-app_with_gitlab_registry :
156
+ docker-build-calculator-app-test :
167
157
extends :
168
- - .link_docker_images_with_gitlab_registry
169
- variables :
170
- IMAGE_NAME : calculator-app
158
+ - .docker-build-test
159
+ - .docker-build-calculator-app
160
+ only :
161
+ - live/caimira-test
171
162
172
- link_calculator_with_gitlab_registry :
163
+ # on release
164
+ .docker-build-release :
165
+ before_script :
166
+ # Extract version number without 'v' prefix as IMAGE_TAG
167
+ - IMAGE_TAG=$(echo "$CI_COMMIT_REF_NAME" | sed 's/^v//')
168
+ - echo "Version is $IMAGE_TAG"
169
+
170
+ docker-build-auth-service-release :
173
171
extends :
174
- - .link_docker_images_with_gitlab_registry
175
- variables :
176
- IMAGE_NAME : calculator
172
+ - .docker-build-release
173
+ - .docker-build-auth-service
174
+ only :
175
+ - tag
177
176
177
+ docker-build-calculator-app-release :
178
+ extends :
179
+ - .docker-build-release
180
+ - .docker-build-calculator-app
181
+ only :
182
+ - tag
178
183
179
184
# ###################################################################################################
180
- # Trigger build of CAiMIRA router on OpenShift
181
-
182
- trigger_caimira-router_build_on_openshift :
185
+ # Deploy to OpenShift
186
+ .deploy :
183
187
stage : deploy
184
- rules :
185
- - if : ' $CI_COMMIT_BRANCH == "live/caimira-test"'
186
- variables :
187
- OC_PROJECT : " caimira-test"
188
- BUILD_WEBHOOK_SECRET : ${OPENSHIFT_CAIMIRA_TEST_BUILD_WEBHOOK_SECRET}
189
- - if : ' $CI_COMMIT_BRANCH == "master"'
190
- variables :
191
- OC_PROJECT : " caimira-prod"
192
- BUILD_WEBHOOK_SECRET : ${OPENSHIFT_CAIMIRA_PROD_BUILD_WEBHOOK_SECRET}
188
+ image : gitlab-registry.cern.ch/paas-tools/openshift-client
189
+ variables :
190
+ IMAGE_TAG : caimira-test-latest
191
+ OPENSHIFT_SERVER : https://api.paas.okd.cern.ch
192
+ OPENSHIFT_PROJECT : caimira-test
193
193
script :
194
- - curl -X POST -k https://api.paas.okd.cern.ch/apis/build.openshift.io/v1/namespaces/${OC_PROJECT}/buildconfigs/caimira-router/webhooks/${BUILD_WEBHOOK_SECRET}/generic
194
+ - echo "Deploying ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${IMAGE_TAG} to OpenShift"
195
+ - oc login $OPENSHIFT_SERVER --token=$OPENSHIFT_CAIMIRA_TEST_DEPLOY_TOKEN
196
+ - oc project $OPENSHIFT_PROJECT
197
+ - oc set image dc/$OPENSHIFT_DEPLOYMENT $OPENSHIFT_CONTAINER_NAME=${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${IMAGE_TAG}
198
+ - oc rollout status dc/$OPENSHIFT_DEPLOYMENT
199
+ only :
200
+ - live/caimira-test
201
+
202
+ deploy-auth-service-test :
203
+ extends : .deploy
204
+ variables :
205
+ IMAGE_NAME : auth-service
206
+ OPENSHIFT_DEPLOYMENT : auth-service
207
+ OPENSHIFT_CONTAINER_NAME : auth-service
208
+
209
+ deploy-calculator-app-test :
210
+ extends : .deploy
211
+ variables :
212
+ IMAGE_NAME : calculator-app
213
+ OPENSHIFT_DEPLOYMENT : calculator-app
214
+ OPENSHIFT_CONTAINER_NAME : calculator-app
215
+
216
+ deploy-calculator-open-app-test :
217
+ extends : .deploy
218
+ variables :
219
+ IMAGE_NAME : calculator-app
220
+ OPENSHIFT_DEPLOYMENT : calculator-open-app
221
+ OPENSHIFT_CONTAINER_NAME : calculator-open-app
0 commit comments