1
- env :
2
- # ## Shared variables
3
- NIGHTLY_CRON : ' nightly-cron'
4
- DOCKER_USERNAME : VAULT[development/kv/data/docker/sonardockerrw data.username]
5
- DOCKER_PASSWORD : VAULT[development/kv/data/docker/sonardockerrw data.access_token_rwd]
6
- KUBE_VERSION : 1.32.0
7
- DOCKER_GCLOUD_SA_KEY : VAULT[development/team/sonarqube/kv/data/gcp-marketplace-registry-staging data.key]
8
- GCLOUD_REGISTRY : gcr.io/sonarqube-marketplace-provider # This is the staging registry
9
- GCLOUD_PRODUCT_NAME : sonarqube-dce-staging # This is the staging product name
10
- GCLOUD_TAG : 10.8.1
11
- ROSA_OPENSHIFT_URL : VAULT[development/team/sonarqube/kv/data/rosa-openshift data.url]
12
- ROSA_OPENSHIFT_USER : VAULT[development/team/sonarqube/kv/data/rosa-dev data.username]
13
- ROSA_OPENSHIFT_PASSWORD : VAULT[development/team/sonarqube/kv/data/rosa-dev data.password]
14
-
15
-
16
-
17
- except_nightly_cron : &EXCEPT_ON_NIGHTLY_CRON
18
- only_if : $CIRRUS_CRON != $NIGHTLY_CRON
19
-
20
- except_external_pr_or_cron : &EXCEPT_ON_PR_OR_CRON
21
- only_if : $CIRRUS_PRERELEASE != "true" && $CIRRUS_PR == "" && $CIRRUS_CRON != $NIGHTLY_CRON
22
-
23
- only_on_non_release_draft_template : &ONLY_ON_NON_RELEASE_DRAFT_TEMPLATE
24
- only_if : $CIRRUS_PRERELEASE != "true"
25
-
26
- docker_build_container_template : &CONTAINER_TEMPLATE
27
- dockerfile : .cirrus/Dockerfile
28
- docker_arguments :
29
- CIRRUS_AWS_ACCOUNT : ${CIRRUS_AWS_ACCOUNT}
30
- cluster_name : ${CIRRUS_CLUSTER_NAME}
31
- builder_role : cirrus-builder
32
- builder_image : docker-builder-v*
33
- builder_instance_type : t2.small
34
- region : eu-central-1
35
- namespace : default
36
- cpu : 1
37
- memory : 1Gb
38
-
39
- container_template : &STD_CONTAINER_TEMPLATE
40
- image : ${CIRRUS_AWS_ACCOUNT}.dkr.ecr.eu-central-1.amazonaws.com/base:j11-latest
41
- cluster_name : ${CIRRUS_CLUSTER_NAME}
42
- region : eu-central-1
43
- namespace : default
44
- cpu : 1
45
- memory : 1Gb
46
-
47
- vm_instance_template : &VM_TEMPLATE
48
- image : docker-builder-v*
49
- type : t2.xlarge
50
- region : eu-central-1
51
- cpu : 4
52
- memory : 16Gb
53
-
54
- clone_script_template : &CLONE_SCRIPT_TEMPLATE
55
- clone_script : |
56
- if [ -z "$CIRRUS_PR" ]; then
57
- git clone --recursive --branch=$CIRRUS_BRANCH https://github.com/${CIRRUS_REPO_FULL_NAME}.git $CIRRUS_WORKING_DIR
58
- git reset --hard $CIRRUS_CHANGE_IN_REPO
59
- else
60
- git clone --recursive https://github.com/${CIRRUS_REPO_FULL_NAME}.git $CIRRUS_WORKING_DIR
61
- git fetch origin pull/$CIRRUS_PR/head:pull/$CIRRUS_PR
62
- git reset --hard $CIRRUS_CHANGE_IN_REPO
63
- fi
64
-
65
- build_gcp_app_template : &BUILD_GCP_APP_TEMPLATE
66
- ec2_instance :
67
- << : *VM_TEMPLATE
68
- login_to_gcr_script :
69
- - export DOCKER_GCLOUD_PASSWORD=$(echo ${DOCKER_GCLOUD_SA_KEY} | base64 -d)
70
- - docker login -u _json_key -p "$DOCKER_GCLOUD_PASSWORD" https://${GCLOUD_REGISTRY}
71
- install_helm_script :
72
- - curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
73
- - chmod 700 get_helm.sh
74
- - ./get_helm.sh
75
- helm_dependency_build_script :
76
- - ./.cirrus/build_chart_dependencies.sh charts/sonarqube-dce
77
- tag_and_promote_script :
78
- - export CURRENT_MINOR_VERSION=$(echo ${GCLOUD_TAG} | cut -d '.' -f 1,2)
79
- - docker build -f google-cloud-marketplace-k8s-app/Dockerfile --build-arg REGISTRY=${GCLOUD_REGISTRY} --build-arg TAG=${GCLOUD_TAG} --tag ${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/deployer:${CURRENT_MINOR_VERSION} .
80
- - docker tag ${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/deployer:${CURRENT_MINOR_VERSION} ${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/deployer:${GCLOUD_TAG}
81
- - docker push ${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/deployer:${GCLOUD_TAG}
82
- - docker push ${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/deployer:${CURRENT_MINOR_VERSION}
83
-
84
- build_gcp_staging_app_task :
85
- << : *BUILD_GCP_APP_TEMPLATE
86
- only_if : $TRIGGER == "PUSH_STAGING_DEPLOYER" || $TRIGGER == "PUSH_PROD_DEPLOYER" || $BRANCH == "master"
87
- env :
88
- GCLOUD_PRODUCT_NAME : sonarqube-dce-staging
89
-
90
- verify_gcp_app_template : &VERIFY_GCP_APP_TEMPLATE
91
- only_if : $TRIGGER == "PUSH_STAGING_DEPLOYER" || $BRANCH == "master"
92
- env :
93
- BASE_FOLDER : " /root/.gcp/cache"
94
- PATH : " ${BASE_FOLDER}:${BASE_FOLDER}/google-cloud-sdk/bin:${PATH}"
95
- KUBE_CONFIG : " /tmp/kubeconfig"
96
- KUBECONFIG : " ${KUBE_CONFIG}"
97
- HOME : " /tmp"
98
- GCLOUD_CLI_VERSION : 495.0.0
99
- MPDEV_VERSION : 0.12.4
100
- gcp_cache :
101
- folder : ${BASE_FOLDER}
102
- fingerprint_script : echo "${GCLOUD_CLI_VERSION}+${MPDEV_VERSION}"
103
- populate_script :
104
- - ./.cirrus/setup.sh
105
- ec2_instance :
106
- << : *VM_TEMPLATE
107
- login_script :
108
- - echo ${DOCKER_GCLOUD_SA_KEY} | base64 -d > /tmp/key.json
109
- - gcloud auth activate-service-account cirrusciservice@sonarqube-marketplace-provider.iam.gserviceaccount.com --key-file /tmp/key.json --project=sonarqube-marketplace-provider
110
- - gcloud auth configure-docker gcr.io --quiet
111
- - gcloud container clusters get-credentials sonarqube-marketplace-staging-standard --zone=europe-west1-b --project=sonarqube-marketplace-provider
112
- verify_script :
113
- - kubectl get pods
114
- - mpdev verify --deployer=$GCLOUD_REGISTRY/$GCLOUD_PRODUCT_NAME/deployer:$GCLOUD_TAG --wait_timeout=1200 --parameters='{"name":"${GCLOUD_PRODUCT_NAME}-cirrus-test", "namespace":"test-cirrus","ApplicationNodes.jwtSecret":"dZ0EB0KxnF++nr5+4vfTCaun/eWbv6gOoXodiAMqcFo=", "postgresql.enabled":true, "jdbcOverwrite.enabled":false }'
115
- depends_on :
116
- - build_gcp_staging_app
117
-
118
- verify_gcp_staging_app_task :
119
- << : *VERIFY_GCP_APP_TEMPLATE
120
- only_if : $TRIGGER == "PUSH_STAGING_DEPLOYER" || $TRIGGER == "PUSH_PROD_DEPLOYER" || $BRANCH == "master"
121
- env :
122
- GCLOUD_PRODUCT_NAME : sonarqube-dce-staging
123
- depends_on :
124
- - build_gcp_staging_app
125
-
126
- chart_static_compatibility_test_task :
127
- << : *ONLY_ON_NON_RELEASE_DRAFT_TEMPLATE
128
- timeout_in : 30m
129
- eks_container :
130
- << : *CONTAINER_TEMPLATE
131
- cpu : 1
132
- memory : 1Gb
133
- << : *CLONE_SCRIPT_TEMPLATE
134
- script :
135
- - ./.cirrus/build_chart_dependencies.sh charts/sonarqube
136
- - ./.cirrus/unit_helm_compatibility_test.sh sonarqube
137
- - ./.cirrus/build_chart_dependencies.sh charts/sonarqube-dce
138
- - ./.cirrus/unit_helm_compatibility_test.sh sonarqube-dce
139
-
140
1
chart_fixture_test_task :
141
2
<< : *ONLY_ON_NON_RELEASE_DRAFT_TEMPLATE
3
+ skip : " !changesInclude('charts/**/*', '.cirrus/*')"
142
4
timeout_in : 30m
143
5
eks_container :
144
6
<< : *CONTAINER_TEMPLATE
@@ -153,6 +15,7 @@ chart_fixture_test_task:
153
15
154
16
chart_testing_on_kind_task :
155
17
<< : *ONLY_ON_NON_RELEASE_DRAFT_TEMPLATE
18
+ skip : " !changesInclude('charts/**/*', '.cirrus/*')"
156
19
timeout_in : 1h
157
20
ec2_instance :
158
21
<< : *VM_TEMPLATE
@@ -162,7 +25,7 @@ chart_testing_on_kind_task:
162
25
- kind create cluster
163
26
- kubectl cluster-info --context kind-kind
164
27
- kubectl get nodes
165
- - kubectl create namespace test --dry-run=client -o yaml | kubectl apply -f -
28
+ - kubectl create namespace test --dry-run=client -o yaml | kubectl apply -f -
166
29
- kubectl create secret docker-registry pullsecret --namespace test --docker-username=${DOCKER_USERNAME} --docker-password=${DOCKER_PASSWORD} --dry-run=client -o yaml | kubectl apply -f -
167
30
script :
168
31
- ct lint --config test.yaml --all
@@ -173,124 +36,3 @@ chart_testing_on_kind_task:
173
36
- ah lint
174
37
depends_on :
175
38
- chart_static_compatibility_test
176
-
177
- chart_testing_on_openshift_task :
178
- << : *ONLY_ON_NON_RELEASE_DRAFT_TEMPLATE
179
- timeout_in : 1h
180
- eks_container :
181
- << : *CONTAINER_TEMPLATE
182
- cpu : 2
183
- memory : 4Gb
184
- authenticate_to_openshift_script :
185
- - ./.cirrus/openshift_auth.sh
186
- matrix :
187
- - name : chart_testing_on_openshift_sonarqube
188
- env :
189
- - VERIFYING_CHART : sonarqube
190
- - name : chart_testing_on_openshift_sonarqube_dce
191
- env :
192
- - VERIFYING_CHART : sonarqube-dce
193
- setup_script :
194
- - oc new-project "${VERIFYING_CHART}" --display-name="Test Project" --description="This is a test project for testing ${VERIFYING_CHART} from Cirrus" || oc project "${VERIFYING_CHART}"
195
- - kubectl create secret docker-registry pullsecret --namespace "${VERIFYING_CHART}" --docker-username=${DOCKER_USERNAME} --docker-password=${DOCKER_PASSWORD} --dry-run=client -o yaml | kubectl apply -f -
196
- - ./.cirrus/build_chart_dependencies.sh charts/"${VERIFYING_CHART}"
197
- - chart-verifier version
198
- script :
199
- - mkdir -p "$(pwd)/report-${VERIFYING_CHART}"
200
- - chart-verifier verify charts/"${VERIFYING_CHART}" --helm-install-timeout 20m -F charts/"${VERIFYING_CHART}"/openshift-verifier/values.yaml -n "${VERIFYING_CHART}" --openshift-version 4.16 > "$(pwd)/report-${VERIFYING_CHART}/report.yaml"
201
- verifier_report_artifacts :
202
- path : " report-*/*.yaml"
203
- check_violations_script :
204
- - cat "report-${VERIFYING_CHART}/report.yaml" | ./.cirrus/verify_openshift.sh
205
- always :
206
- cleanup_script :
207
- - oc delete project "${VERIFYING_CHART}"
208
- depends_on :
209
- - chart_static_compatibility_test
210
-
211
- chart_packaging_task :
212
- << : *ONLY_ON_NON_RELEASE_DRAFT_TEMPLATE
213
- timeout_in : 15m
214
- eks_container :
215
- << : *CONTAINER_TEMPLATE
216
- cpu : 2
217
- memory : 1Gb
218
- << : *CLONE_SCRIPT_TEMPLATE
219
- environment_cache :
220
- folder : ${CIRRUS_WORKING_DIR}/*.tgz*
221
- fingerprint_script : echo $CIRRUS_BUILD_ID
222
- env :
223
- GITHUB_TOKEN : VAULT[development/github/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-releases token]
224
- SONARSOURCE_SIGN_KEY : VAULT[development/kv/data/sign data.key]
225
- SONARSOURCE_SIGN_KEY_ID : VAULT[development/kv/data/sign data.key_id]
226
- SONARSOURCE_SIGN_KEY_PASSPHRASE : VAULT[development/kv/data/sign data.passphrase]
227
- key_file :
228
- path : /tmp/key
229
- variable_name : SONARSOURCE_SIGN_KEY
230
- script :
231
- - source cirrus-env BUILD
232
- - helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
233
- - helm repo add bitnami-pre2022 https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
234
- - helm repo update
235
- - ./.cirrus/package.sh
236
- - ./.cirrus/sign_chart.sh
237
- depends_on :
238
- - chart_testing_on_kind
239
- - chart_testing_on_openshift_sonarqube
240
- - chart_testing_on_openshift_sonarqube_dce
241
-
242
- push_to_repox_task :
243
- << : *EXCEPT_ON_PR_OR_CRON
244
- timeout_in : 15m
245
- eks_container :
246
- << : *STD_CONTAINER_TEMPLATE
247
- cpu : 1
248
- memory : 1Gb
249
- << : *CLONE_SCRIPT_TEMPLATE
250
- environment_cache :
251
- folder : ${CIRRUS_WORKING_DIR}/*.tgz*
252
- fingerprint_script : echo $CIRRUS_BUILD_ID
253
- env :
254
- ARTIFACTORY_URL : VAULT[development/kv/data/repox data.url]
255
- ARTIFACTORY_ACCESS_TOKEN : VAULT[development/artifactory/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-qa-deployer access_token]
256
- script :
257
- - source cirrus-env ""
258
- - ./.cirrus/upload_chart.sh
259
- depends_on :
260
- - chart_packaging
261
-
262
- trigger_release_task :
263
- timeout_in : 15m
264
- eks_container :
265
- << : *STD_CONTAINER_TEMPLATE
266
- cpu : 1
267
- memory : 1Gb
268
- only_if : $CIRRUS_PRERELEASE != "true" && $CIRRUS_RELEASE != ""
269
- << : *CLONE_SCRIPT_TEMPLATE
270
- stateful : ' true'
271
- environment_cache :
272
- folder : ${CIRRUS_WORKING_DIR}/*.tgz*
273
- fingerprint_script : echo $CIRRUS_BUILD_ID
274
- env :
275
- GITHUB_TOKEN : VAULT[development/github/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-releases token]
276
- SLACK_TOKEN : VAULT[development/kv/data/slack data.token]
277
- gh_action_script : |
278
- source cirrus-env RELEASE
279
- CHARTS=$(find $CIRRUS_WORKING_DIR -maxdepth 1 -name "*.tgz*" -type f -exec basename "{}" ";")
280
- [[ "x$CHARTS" == "x" ]] && exit 0
281
- gh workflow run release.yml -f version=$CIRRUS_TAG -f buildNumber=$BUILD_NUMBER
282
- depends_on :
283
- - chart_packaging
284
- - push_to_repox
285
- on_failure :
286
- slack_notification_script :
287
- - ./.cirrus/slack-notification.sh
288
-
289
- release_gcp_prod_app_task :
290
- << : *BUILD_GCP_APP_TEMPLATE
291
- only_if : $TRIGGER == "PUSH_PROD_DEPLOYER"
292
- env :
293
- GCLOUD_REGISTRY : gcr.io/sonarsource-public
294
- GCLOUD_PRODUCT_NAME : official-sonarqube-data-center-edition
295
- depends_on :
296
- - verify_gcp_staging_app
0 commit comments