Skip to content

Commit 048c791

Browse files
committed
Merge branch 'feature/backend_separation' into 'master'
CAiMIRA API development See merge request caimira/caimira!502
2 parents 6f77b6e + 2998df0 commit 048c791

File tree

188 files changed

+1647
-1335
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

188 files changed

+1647
-1335
lines changed

.github/workflows/tests.yml

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ jobs:
2424
env:
2525
PROJECT_ROOT: ./
2626
PROJECT_NAME: caimira
27+
CAIMIRA_TESTS_CALCULATOR_TIMEOUT: 30
2728
steps:
2829
- name: Checkout
2930
uses: actions/checkout@v2

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ __pycache__
33
*.egg-info
44
*.DS_Store
55
*.pyc
6+
dist
67

78
# Editor stuff
89
*.swp
@@ -18,4 +19,4 @@ app-config/openshift/caimira-test
1819
app-config/openshift/caimira-prod
1920

2021
# documentation build folder
21-
caimira/docs/_build
22+
caimira/docs/_build

.gitlab-ci.yml

+123-96
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
stages:
22
- test
33
- docker-build
4-
- oc-tag
54
- deploy
65

76
# Use the acc-py-devtools templates found at
@@ -11,39 +10,61 @@ include:
1110
file: acc_py_devtools/templates/gitlab-ci/python.yml
1211

1312
variables:
14-
project_name: caimira
15-
13+
PY_VERSION: "3.11"
1614

1715
# ###################################################################################################
18-
# Test code
16+
# Test code - CAiMIRA (model) and CERN CAiMIRA (CERN's UI)
1917

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
2323

24+
.test-run:
25+
extends:
26+
- .test-base
27+
script:
28+
- cd ./${PROJECT_ROOT}
29+
- pip install -e .[test]
30+
- python -m pytest
2431

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
2837

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
2947

30-
# A development installation of CAiMIRA tested with pytest.
31-
test_dev-39:
48+
test-caimira-py39:
3249
variables:
3350
PY_VERSION: "3.9"
34-
extends: .acc_py_dev_test
51+
PROJECT_ROOT: "caimira"
52+
extends:
53+
- test-caimira-py311
3554

55+
test-cern-caimira-py39:
56+
variables:
57+
PY_VERSION: "3.9"
58+
PROJECT_ROOT: "cern_caimira"
59+
extends:
60+
- test-cern-caimira-py311
3661

3762
# ###################################################################################################
3863
# Test OpenShift config
3964

4065
.test_openshift_config:
4166
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
4768
image: registry.cern.ch/docker.io/mambaorg/micromamba
4869
before_script:
4970
- micromamba create --yes -p $HOME/env python=3.9 ruamel.yaml wget -c conda-forge
@@ -63,7 +84,9 @@ test_dev-39:
6384
paths:
6485
- ./app-config/openshift/${CAIMIRA_INSTANCE}/actual
6586
- ./app-config/openshift/${CAIMIRA_INSTANCE}/expected
66-
87+
only:
88+
- master
89+
- live/caimira-test # do not run tests on live/caimira-test branch
6790

6891
check_openshift_config_test:
6992
extends: .test_openshift_config
@@ -73,35 +96,29 @@ check_openshift_config_test:
7396
OC_SERVER: https://api.paas.okd.cern.ch
7497
OC_TOKEN: "${OPENSHIFT_CAIMIRA_TEST_CONFIG_CHECKER_TOKEN}"
7598

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}"
84107

85108

86109
# ###################################################################################################
87110
# Build docker images
88111

89-
.image_builder:
90-
# Build and push images to the openshift instance, which automatically triggers an application re-deployment.
112+
# base
113+
.docker-build:
91114
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
99115
image:
100116
# Based on guidance at https://gitlab.cern.ch/gitlabci-examples/build_docker_image.
101117
# 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.
102118
name: gcr.io/kaniko-project/executor:debug
103119
entrypoint: [""]
104120
script:
121+
- echo "Building image for ${CI_COMMIT_REF_NAME} branch with tag ${IMAGE_TAG}"
105122
# Prepare Kaniko configuration file
106123
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
107124
- echo "Building ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:latest Docker image..."
@@ -110,85 +127,95 @@ check_openshift_config_prod:
110127
# Print the full registry path of the pushed image
111128
- echo "Image pushed successfully to ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${IMAGE_TAG}"
112129

113-
114-
auth-service-image_builder:
115-
extends:
116-
- .image_builder
130+
.docker-build-auth-service:
117131
variables:
118132
IMAGE_NAME: auth-service
119133
DOCKERFILE_DIRECTORY: app-config/auth-service
120134
DOCKER_CONTEXT_DIRECTORY: app-config/auth-service
135+
extends: .docker-build
121136

122-
123-
calculator-app-image_builder:
124-
extends:
125-
- .image_builder
137+
.docker-build-calculator-app:
126138
variables:
127139
IMAGE_NAME: calculator-app
128140
DOCKERFILE_DIRECTORY: app-config/calculator-app
129141
DOCKER_CONTEXT_DIRECTORY: ""
142+
extends: .docker-build
130143

131-
132-
oci_calculator:
133-
extends: .image_builder
144+
# on push to live/caimira-test
145+
.docker-build-test:
134146
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
159148

160-
link_auth-service_with_gitlab_registry:
149+
docker-build-auth-service-test:
161150
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
165155

166-
link_calculator-app_with_gitlab_registry:
156+
docker-build-calculator-app-test:
167157
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
171162

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:
173171
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
177176

177+
docker-build-calculator-app-release:
178+
extends:
179+
- .docker-build-release
180+
- .docker-build-calculator-app
181+
only:
182+
- tag
178183

179184
# ###################################################################################################
180-
# Trigger build of CAiMIRA router on OpenShift
181-
182-
trigger_caimira-router_build_on_openshift:
185+
# Deploy to OpenShift
186+
.deploy:
183187
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
193193
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

Comments
 (0)