13
13
SONARQUBE_VERSION : 25.3.0.104237
14
14
# Use bash (instead of sh on linux or cmd.exe on windows)
15
15
CIRRUS_SHELL : bash
16
+ JF_ALIAS : " jfrog"
16
17
17
18
only_if : $CIRRUS_USER_COLLABORATOR == 'true' && $CIRRUS_TAG == "" && ($CIRRUS_PR != "" || $CIRRUS_BRANCH == 'master' || $CIRRUS_BRANCH =~ "branch-.*")
18
19
linux_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
31
42
32
43
win_vm_definition : &WINDOWS_VM_DEFINITION
44
+ env :
45
+ JF_ALIAS : " jf"
33
46
ec2_instance :
34
47
experimental : true # see https://github.com/cirruslabs/cirrus-ci-docs/issues/1051
35
48
image : base-windows-jdk17-v*
@@ -58,22 +71,12 @@ win_ssd_and_clone:
58
71
git reset --hard $CIRRUS_CHANGE_IN_REPO
59
72
fi
60
73
61
- .jfrog__config_template : &JFROG_CONFIG_TEMPLATE
74
+ .jfrog_config_template : &JFROG_CONFIG_TEMPLATE
62
75
jfrog_config_script :
63
76
- $JF_ALIAS config add repox --artifactory-url "$ARTIFACTORY_URL" --access-token "$ARTIFACTORY_PRIVATE_ACCESS_TOKEN"
64
77
- $JF_ALIAS poetry-config --server-id-resolve repox --repo-resolve sonarsource-pypi
65
78
- $JF_ALIAS poetry install --build-name="$CIRRUS_REPO_NAME" --build-number="$CI_BUILD_NUMBER"
66
79
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
-
77
80
poetry_win_install : &POETRY_WIN_INSTALL
78
81
<< : *WINDOWS_VM_DEFINITION
79
82
<< : *WIN_SSD_AND_CLONE
@@ -86,25 +89,23 @@ poetry_win_install: &POETRY_WIN_INSTALL
86
89
poetry_win_install_script :
87
90
- source cirrus-env QA
88
91
- pip install poetry=="$POETRY_VERSION"
89
- - source set_poetry_build_version "$CI_BUILD_NUMBER"
90
- << : *JFROG_WIN_CONFIG_TEMPLATE
92
+ << : *JFROG_CONFIG_TEMPLATE
91
93
92
94
poetry_cache_template : &POETRY_CACHE
93
95
poetry_cache :
94
96
folder : ~/.cache/poetry/
95
97
fingerprint_script : cat poetry.lock
96
98
97
- .poetry_template : &POETRY_TEMPLATE
99
+ .poetry_install_template : &POETRY_INSTALL
98
100
<< : *POETRY_CACHE
101
+ << : *JFROG_CONFIG_TEMPLATE
99
102
poetry_install_script :
103
+ - poetry install
104
+
105
+ .poetry_set_version_template : &POETRY_SET_VERSION
106
+ poetry_set_version_script :
100
107
- source set_poetry_build_version "$CI_BUILD_NUMBER"
101
108
- 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
108
109
109
110
.poetry_macos_template : &POETRY_MACOS_TEMPLATE
110
111
<< : *POETRY_CACHE
@@ -114,7 +115,7 @@ poetry_cache_template: &POETRY_CACHE
114
115
poetry_install_script :
115
116
- brew install poetry
116
117
- 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
118
119
119
120
macos_worker_template : &MACOS_WORKER_DEFINITION
120
121
persistent_worker :
@@ -129,20 +130,15 @@ macos_worker_template: &MACOS_WORKER_DEFINITION
129
130
envname : prod
130
131
131
132
mend_scan_task :
132
- << : *POETRY_LINUX_TEMPLATE
133
133
depends_on :
134
134
- build
135
135
# run only on master and long-living branches
136
136
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
144
138
env :
145
139
WS_APIKEY : VAULT[development/kv/data/mend data.apikey]
140
+ << : *POETRY_INSTALL
141
+ << : *POETRY_SET_VERSION
146
142
mend_script :
147
143
- source cirrus-env QA
148
144
- source ws_scan.sh
@@ -152,33 +148,32 @@ mend_scan_task:
152
148
path : " whitesource/**/*"
153
149
154
150
formatting_task :
155
- << : *POETRY_LINUX_TEMPLATE
156
151
alias : formatting
157
152
name : " Formatting"
153
+ << : *LINUX_CONTAINER_DEFINITION
154
+ << : *POETRY_INSTALL
158
155
formatting_script :
159
156
- poetry run black src/ tests/ --check
160
157
- poetry run licenseheaders -t license_header.tmpl -o "SonarSource SA" -y 2011-2024 -n "Sonar Scanner Python" -E .py -d src/
161
158
- poetry run licenseheaders -t license_header.tmpl -o "SonarSource SA" -y 2011-2024 -n "Sonar Scanner Python" -E .py -d tests/
162
159
- git diff --name-only --exit-code ./src ./tests
163
160
164
161
documentation_task :
165
- << : *POETRY_LINUX_TEMPLATE
166
162
alias : documentation
167
163
name : " CLI Documentation"
164
+ << : *LINUX_CONTAINER_DEFINITION
165
+ << : *POETRY_INSTALL
168
166
cli_docs_script :
169
167
- poetry run python tools/generate_cli_documentation.py
170
168
- git diff --exit-code CLI_ARGS.md
171
169
172
170
analysis_linux_task :
173
- << : *POETRY_CACHE
174
- eks_container :
175
- << : *LINUX_CONTAINER_DEFINITION
171
+ << : *LINUX_CONTAINER_DEFINITION
176
172
alias : analysis
177
173
name : " NEXT Analysis"
174
+ << : *POETRY_INSTALL
178
175
# 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
180
176
analysis_script :
181
- - poetry install
182
177
- poetry run pytest --cov-report=xml:coverage.xml --cov-config=pyproject.toml --cov=src --cov-branch tests
183
178
- poetry run mypy src/ > mypy-report.txt || true # mypy exits with 1 if there are errors
184
179
- uv venv
@@ -218,7 +213,9 @@ qa_task:
218
213
eks_container :
219
214
docker_arguments :
220
215
PYTHON_VERSION : 3.13.2
221
- << : *POETRY_LINUX_TEMPLATE
216
+ << : *LINUX_CONTAINER_DEFINITION
217
+ << : *POETRY_INSTALL
218
+ << : *POETRY_SET_VERSION
222
219
qa_script :
223
220
- poetry run pytest tests/
224
221
@@ -245,13 +242,16 @@ qa_macos_task:
245
242
qa_windows_task :
246
243
name : " Test Windows"
247
244
<< : *POETRY_WIN_INSTALL
245
+ << : *POETRY_SET_VERSION
248
246
alias : qa_windows
249
247
qa_script :
250
248
- poetry run pytest tests/
251
249
- exit $LASTEXITCODE
252
250
253
251
build_task :
254
- << : *POETRY_LINUX_TEMPLATE
252
+ << : *LINUX_CONTAINER_DEFINITION
253
+ << : *POETRY_INSTALL
254
+ << : *POETRY_SET_VERSION
255
255
alias : build
256
256
name : " Build"
257
257
build_script : regular_poetry_build_publish
@@ -263,7 +263,8 @@ its_task:
263
263
folder : sonarqube_cache/
264
264
populate_script : mkdir -p sonarqube_cache && wget -q https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-$SONARQUBE_VERSION.zip -O sonarqube_cache/sonarqube.zip
265
265
fingerprint_script : echo "sonarqube-$SONARQUBE_VERSION"
266
- << : *POETRY_LINUX_TEMPLATE
266
+ << : *LINUX_CONTAINER_DEFINITION
267
+ << : *POETRY_INSTALL
267
268
its_script :
268
269
- .cirrus/run_its.sh
269
270
@@ -291,5 +292,7 @@ promote_task:
291
292
env :
292
293
ARTIFACTORY_PROMOTE_ACCESS_TOKEN : VAULT[development/artifactory/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-promoter access_token]
293
294
GITHUB_TOKEN : VAULT[development/github/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-promotion token]
294
- << : *POETRY_LINUX_TEMPLATE
295
+ << : *LINUX_CONTAINER_DEFINITION
296
+ << : *POETRY_INSTALL
297
+ << : *POETRY_SET_VERSION
295
298
promote_script : cirrus_promote
0 commit comments