1313 SONARQUBE_VERSION : 25.3.0.104237
1414 # Use bash (instead of sh on linux or cmd.exe on windows)
1515 CIRRUS_SHELL : bash
16+ JF_ALIAS : " jfrog"
1617
1718only_if : $CIRRUS_USER_COLLABORATOR == 'true' && $CIRRUS_TAG == "" && ($CIRRUS_PR != "" || $CIRRUS_BRANCH == 'master' || $CIRRUS_BRANCH =~ "branch-.*")
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_container_definition : &MEND_CONTAINER_DEFINITION
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
44+ env :
45+ JF_ALIAS : " jf"
3346 ec2_instance :
3447 experimental : true # see https://github.com/cirruslabs/cirrus-ci-docs/issues/1051
3548 image : base-windows-jdk17-v*
@@ -58,22 +71,12 @@ win_ssd_and_clone:
5871 git reset --hard $CIRRUS_CHANGE_IN_REPO
5972 fi
6073
61- .jfrog__config_template : &JFROG_CONFIG_TEMPLATE
74+ .jfrog_config_template : &JFROG_CONFIG_TEMPLATE
6275 jfrog_config_script :
6376 - $JF_ALIAS config add repox --artifactory-url "$ARTIFACTORY_URL" --access-token "$ARTIFACTORY_PRIVATE_ACCESS_TOKEN"
6477 - $JF_ALIAS poetry-config --server-id-resolve repox --repo-resolve sonarsource-pypi
6578 - $JF_ALIAS poetry install --build-name="$CIRRUS_REPO_NAME" --build-number="$CI_BUILD_NUMBER"
6679
67- .jfrog_windows_config_template : &JFROG_WIN_CONFIG_TEMPLATE
68- env :
69- JF_ALIAS : " jf"
70- << : *JFROG_CONFIG_TEMPLATE
71-
72- .jfrog_MAC_LINUX_config_template : &JFROG_MAC_LINUX_CONFIG_TEMPLATE
73- env :
74- JF_ALIAS : " jfrog"
75- << : *JFROG_CONFIG_TEMPLATE
76-
7780poetry_win_install : &POETRY_WIN_INSTALL
7881 << : *WINDOWS_VM_DEFINITION
7982 << : *WIN_SSD_AND_CLONE
@@ -86,25 +89,23 @@ poetry_win_install: &POETRY_WIN_INSTALL
8689 poetry_win_install_script :
8790 - source cirrus-env QA
8891 - pip install poetry=="$POETRY_VERSION"
89- - source set_poetry_build_version "$CI_BUILD_NUMBER"
90- << : *JFROG_WIN_CONFIG_TEMPLATE
92+ << : *JFROG_CONFIG_TEMPLATE
9193
9294poetry_cache_template : &POETRY_CACHE
9395 poetry_cache :
9496 folder : ~/.cache/poetry/
9597 fingerprint_script : cat poetry.lock
9698
97- .poetry_template : &POETRY_TEMPLATE
99+ .poetry_install_template : &POETRY_INSTALL
98100 << : *POETRY_CACHE
101+ << : *JFROG_CONFIG_TEMPLATE
99102 poetry_install_script :
103+ - poetry install
104+
105+ .poetry_set_version_template : &POETRY_SET_VERSION
106+ poetry_set_version_script :
100107 - source set_poetry_build_version "$CI_BUILD_NUMBER"
101108 - echo "PROJECT_VERSION=$PROJECT_VERSION" >> $CIRRUS_ENV
102- << : *JFROG_MAC_LINUX_CONFIG_TEMPLATE
103-
104- .poetry_linux_template : &POETRY_LINUX_TEMPLATE
105- << : *POETRY_TEMPLATE
106- eks_container :
107- << : *LINUX_CONTAINER_DEFINITION
108109
109110.poetry_macos_template : &POETRY_MACOS_TEMPLATE
110111 << : *POETRY_CACHE
@@ -114,7 +115,7 @@ poetry_cache_template: &POETRY_CACHE
114115 poetry_install_script :
115116 - brew install poetry
116117 - poetry config keyring.enabled false # Keyring is locked in macOS VM and not needed for downloading dependencies
117- << : *JFROG_MAC_LINUX_CONFIG_TEMPLATE
118+ << : *JFROG_CONFIG_TEMPLATE
118119
119120macos_worker_template : &MACOS_WORKER_DEFINITION
120121 persistent_worker :
@@ -129,20 +130,15 @@ macos_worker_template: &MACOS_WORKER_DEFINITION
129130 envname : prod
130131
131132mend_scan_task :
132- << : *POETRY_LINUX_TEMPLATE
133133 depends_on :
134134 - build
135135 # run only on master and long-living branches
136136 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
137+ << : *MEND_CONTAINER_DEFINITION
144138 env :
145139 WS_APIKEY : VAULT[development/kv/data/mend data.apikey]
140+ << : *POETRY_INSTALL
141+ << : *POETRY_SET_VERSION
146142 mend_script :
147143 - source cirrus-env QA
148144 - source ws_scan.sh
@@ -152,33 +148,32 @@ mend_scan_task:
152148 path : " whitesource/**/*"
153149
154150formatting_task :
155- << : *POETRY_LINUX_TEMPLATE
156151 alias : formatting
157152 name : " Formatting"
153+ << : *LINUX_CONTAINER_DEFINITION
154+ << : *POETRY_INSTALL
158155 formatting_script :
159156 - poetry run black src/ tests/ --check
160157 - poetry run licenseheaders -t license_header.tmpl -o "SonarSource SA" -y 2011-2024 -n "Sonar Scanner Python" -E .py -d src/
161158 - poetry run licenseheaders -t license_header.tmpl -o "SonarSource SA" -y 2011-2024 -n "Sonar Scanner Python" -E .py -d tests/
162159 - git diff --name-only --exit-code ./src ./tests
163160
164161documentation_task :
165- << : *POETRY_LINUX_TEMPLATE
166162 alias : documentation
167163 name : " CLI Documentation"
164+ << : *LINUX_CONTAINER_DEFINITION
165+ << : *POETRY_INSTALL
168166 cli_docs_script :
169167 - poetry run python tools/generate_cli_documentation.py
170168 - git diff --exit-code CLI_ARGS.md
171169
172170analysis_linux_task :
173- << : *POETRY_CACHE
174- eks_container :
175- << : *LINUX_CONTAINER_DEFINITION
171+ << : *LINUX_CONTAINER_DEFINITION
176172 alias : analysis
177173 name : " NEXT Analysis"
174+ << : *POETRY_INSTALL
178175 # For NEXT analysis we don't need to set the build versions, but we still need to access jfrog to recover the dependencies
179- << : *JFROG_MAC_LINUX_CONFIG_TEMPLATE
180176 analysis_script :
181- - poetry install
182177 - poetry run pytest --cov-report=xml:coverage.xml --cov-config=pyproject.toml --cov=src --cov-branch tests
183178 - poetry run mypy src/ > mypy-report.txt || true # mypy exits with 1 if there are errors
184179 - uv venv
@@ -218,7 +213,9 @@ qa_task:
218213 eks_container :
219214 docker_arguments :
220215 PYTHON_VERSION : 3.13.2
221- << : *POETRY_LINUX_TEMPLATE
216+ << : *LINUX_CONTAINER_DEFINITION
217+ << : *POETRY_INSTALL
218+ << : *POETRY_SET_VERSION
222219 qa_script :
223220 - poetry run pytest tests/
224221
@@ -245,13 +242,16 @@ qa_macos_task:
245242qa_windows_task :
246243 name : " Test Windows"
247244 << : *POETRY_WIN_INSTALL
245+ << : *POETRY_SET_VERSION
248246 alias : qa_windows
249247 qa_script :
250248 - poetry run pytest tests/
251249 - exit $LASTEXITCODE
252250
253251build_task :
254- << : *POETRY_LINUX_TEMPLATE
252+ << : *LINUX_CONTAINER_DEFINITION
253+ << : *POETRY_INSTALL
254+ << : *POETRY_SET_VERSION
255255 alias : build
256256 name : " Build"
257257 build_script : regular_poetry_build_publish
@@ -263,7 +263,8 @@ its_task:
263263 folder : sonarqube_cache/
264264 populate_script : mkdir -p sonarqube_cache && wget -q https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-$SONARQUBE_VERSION.zip -O sonarqube_cache/sonarqube.zip
265265 fingerprint_script : echo "sonarqube-$SONARQUBE_VERSION"
266- << : *POETRY_LINUX_TEMPLATE
266+ << : *LINUX_CONTAINER_DEFINITION
267+ << : *POETRY_INSTALL
267268 its_script :
268269 - .cirrus/run_its.sh
269270
@@ -291,5 +292,6 @@ promote_task:
291292 env :
292293 ARTIFACTORY_PROMOTE_ACCESS_TOKEN : VAULT[development/artifactory/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-promoter access_token]
293294 GITHUB_TOKEN : VAULT[development/github/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-promotion token]
294- << : *POETRY_LINUX_TEMPLATE
295+ << : *POETRY_INSTALL
296+ << : *POETRY_SET_VERSION
295297 promote_script : cirrus_promote
0 commit comments