1515 CIRRUS_SHELL : bash
1616
1717only_if : $CIRRUS_USER_COLLABORATOR == 'true' && $CIRRUS_TAG == "" && ($CIRRUS_PR != "" || $CIRRUS_BRANCH == 'master' || $CIRRUS_BRANCH =~ "branch-.*")
18+
1819linux_container_definition : &LINUX_CONTAINER_DEFINITION
19- dockerfile : .cirrus/poetry.Dockerfile
20- cluster_name : ${CIRRUS_CLUSTER_NAME}
21- region : eu-central-1
22- namespace : default
23- builder_role : cirrus-builder
24- builder_image : docker-builder-v*
25- builder_instance_type : t3.small
26- use_in_memory_disk : true
27- docker_arguments :
28- CIRRUS_AWS_ACCOUNT : ${CIRRUS_AWS_ACCOUNT}
29- cpu : 3
30- memory : 8G
20+ eks_container :
21+ dockerfile : .cirrus/poetry.Dockerfile
22+ cluster_name : ${CIRRUS_CLUSTER_NAME}
23+ region : eu-central-1
24+ namespace : default
25+ builder_role : cirrus-builder
26+ builder_image : docker-builder-v*
27+ builder_instance_type : t3.small
28+ use_in_memory_disk : true
29+ docker_arguments :
30+ CIRRUS_AWS_ACCOUNT : ${CIRRUS_AWS_ACCOUNT}
31+ cpu : 3
32+ memory : 8G
33+
34+ mend_base_container : &MEND_BASE_CONTAINER
35+ eks_container :
36+ image : ${CIRRUS_AWS_ACCOUNT}.dkr.ecr.eu-central-1.amazonaws.com/base:j21-latest
37+ region : eu-central-1
38+ cluster_name : ${CIRRUS_CLUSTER_NAME}
39+ namespace : default
40+ cpu : 4
41+ memory : 2G
3142
3243win_vm_definition : &WINDOWS_VM_DEFINITION
3344 ec2_instance :
@@ -101,10 +112,26 @@ poetry_cache_template: &POETRY_CACHE
101112 - echo "PROJECT_VERSION=$PROJECT_VERSION" >> $CIRRUS_ENV
102113 << : *JFROG_MAC_LINUX_CONFIG_TEMPLATE
103114
115+ # Basic Linux container with poetry (no jfrog, no build version)
116+ .basic_poetry_linux_template : &POETRY_INSTALL_SCRIPT
117+ << : *LINUX_CONTAINER_DEFINITION
118+ << : *JFROG_MAC_LINUX_CONFIG_TEMPLATE
119+ << : *POETRY_CACHE
120+ poetry_basic_install_script :
121+ - poetry install
122+
123+ # Poetry dependencies template (for tasks that override container)
124+ .poetry_dependencies_template : &POETRY_DEPENDENCIES_TEMPLATE
125+ << : *POETRY_CACHE
126+ poetry_install_script :
127+ - source set_poetry_build_version "$CI_BUILD_NUMBER"
128+ - echo "PROJECT_VERSION=$PROJECT_VERSION" >> $CIRRUS_ENV
129+ << : *JFROG_MAC_LINUX_CONFIG_TEMPLATE
130+
131+ # Full poetry linux template (for tasks needing everything)
104132.poetry_linux_template : &POETRY_LINUX_TEMPLATE
133+ << : *LINUX_CONTAINER_DEFINITION
105134 << : *POETRY_TEMPLATE
106- eks_container :
107- << : *LINUX_CONTAINER_DEFINITION
108135
109136.poetry_macos_template : &POETRY_MACOS_TEMPLATE
110137 << : *POETRY_CACHE
@@ -129,18 +156,12 @@ macos_worker_template: &MACOS_WORKER_DEFINITION
129156 envname : prod
130157
131158mend_scan_task :
132- << : *POETRY_LINUX_TEMPLATE
159+ << : *POETRY_DEPENDENCIES_TEMPLATE
133160 depends_on :
134161 - build
135162 # run only on master and long-living branches
136163 only_if : $CIRRUS_USER_COLLABORATOR == 'true' && $CIRRUS_TAG == "" && ($CIRRUS_BRANCH == "master" || $CIRRUS_BRANCH =~ "branch-.*")
137- eks_container :
138- image : ${CIRRUS_AWS_ACCOUNT}.dkr.ecr.eu-central-1.amazonaws.com/base:j21-latest
139- region : eu-central-1
140- cluster_name : ${CIRRUS_CLUSTER_NAME}
141- namespace : default
142- cpu : 4
143- memory : 2G
164+ << : *MEND_BASE_CONTAINER
144165 env :
145166 WS_APIKEY : VAULT[development/kv/data/mend data.apikey]
146167 mend_script :
@@ -152,7 +173,8 @@ mend_scan_task:
152173 path : " whitesource/**/*"
153174
154175formatting_task :
155- << : *POETRY_LINUX_TEMPLATE
176+ << : *LINUX_CONTAINER_DEFINITION
177+ << : *POETRY_INSTALL_SCRIPT
156178 alias : formatting
157179 name : " Formatting"
158180 formatting_script :
@@ -162,17 +184,17 @@ formatting_task:
162184 - git diff --name-only --exit-code ./src ./tests
163185
164186documentation_task :
165- << : *POETRY_LINUX_TEMPLATE
187+ << : *LINUX_CONTAINER_DEFINITION
188+ << : *POETRY_INSTALL_SCRIPT
166189 alias : documentation
167190 name : " CLI Documentation"
168191 cli_docs_script :
169192 - poetry run python tools/generate_cli_documentation.py
170193 - git diff --exit-code CLI_ARGS.md
171194
172195analysis_linux_task :
196+ << : *LINUX_CONTAINER_DEFINITION
173197 << : *POETRY_CACHE
174- eks_container :
175- << : *LINUX_CONTAINER_DEFINITION
176198 alias : analysis
177199 name : " NEXT Analysis"
178200 # For NEXT analysis we don't need to set the build versions, but we still need to access jfrog to recover the dependencies
@@ -218,6 +240,7 @@ qa_task:
218240 eks_container :
219241 docker_arguments :
220242 PYTHON_VERSION : 3.13.2
243+ << : *LINUX_CONTAINER_DEFINITION
221244 << : *POETRY_LINUX_TEMPLATE
222245 qa_script :
223246 - poetry run pytest tests/
@@ -251,6 +274,7 @@ qa_windows_task:
251274 - exit $LASTEXITCODE
252275
253276build_task :
277+ << : *LINUX_CONTAINER_DEFINITION
254278 << : *POETRY_LINUX_TEMPLATE
255279 alias : build
256280 name : " Build"
@@ -263,6 +287,7 @@ its_task:
263287 folder : sonarqube_cache/
264288 populate_script : mkdir -p sonarqube_cache && wget -q https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-$SONARQUBE_VERSION.zip -O sonarqube_cache/sonarqube.zip
265289 fingerprint_script : echo "sonarqube-$SONARQUBE_VERSION"
290+ << : *LINUX_CONTAINER_DEFINITION
266291 << : *POETRY_LINUX_TEMPLATE
267292 its_script :
268293 - .cirrus/run_its.sh
0 commit comments