You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

.cirrus.yml 23KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705
  1. # content of service-account-credentials.json, used to access to Google Cloud Platform
  2. gcp_credentials: ENCRYPTED[!e5f7207bd8d02d383733bef47e18296ac32e3b7d22eb480354e8dd8fdc0004be45a8a4e72c797bd66ee94eb3340fa363!]
  3. env:
  4. GRADLE_OPTS: -Dorg.gradle.jvmargs="-XX:+PrintFlagsFinal -XshowSettings:vm -XX:+HeapDumpOnOutOfMemoryError -XX:+UnlockExperimentalVMOptions -Djava.security.egd=file:/dev/./urandom -Dfile.encoding=UTF8 -Duser.language=en -Duser.country=US"
  5. # to be replaced by other credentials
  6. ARTIFACTORY_PRIVATE_USERNAME: vault-${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-private-reader
  7. ARTIFACTORY_PRIVATE_PASSWORD: VAULT[development/artifactory/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-private-reader access_token]
  8. ARTIFACTORY_DEPLOY_USERNAME: vault-${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-qa-deployer
  9. ARTIFACTORY_DEPLOY_PASSWORD: VAULT[development/artifactory/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-qa-deployer access_token]
  10. ARTIFACTORY_ACCESS_TOKEN: VAULT[development/artifactory/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-private-reader access_token]
  11. ARTIFACTORY_PROMOTE_ACCESS_TOKEN: VAULT[development/artifactory/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-promoter access_token]
  12. # download licenses for testing commercial editions
  13. GITHUB_TOKEN: VAULT[development/github/token/licenses-ro token]
  14. # notifications to burgr
  15. BURGR_URL: VAULT[development/kv/data/burgr data.url]
  16. BURGR_USERNAME: VAULT[development/kv/data/burgr data.cirrus_username]
  17. BURGR_PASSWORD: VAULT[development/kv/data/burgr data.cirrus_password]
  18. # analysis on next.sonarqube.com
  19. SONARQUBE_NEXT_TOKEN: VAULT[development/kv/data/next data.token]
  20. # to trigger docs deployment
  21. ELASTIC_PWD: VAULT[development/team/sonarqube/kv/data/elasticsearch-cloud data.password]
  22. CIRRUS_LOG_TIMESTAMP: true
  23. BRANCH_MAIN: 'master'
  24. BRANCH_NIGHTLY: 'branch-nightly-build'
  25. BRANCH_PATTERN_MAINTENANCE: 'branch-.*'
  26. BRANCH_PATTERN_PUBLIC: 'public_.*'
  27. auto_cancellation: $CIRRUS_BRANCH != $BRANCH_MAIN && $CIRRUS_BRANCH !=~ $BRANCH_PATTERN_MAINTENANCE
  28. skip_public_branches_template: &SKIP_PUBLIC_BRANCHES_TEMPLATE
  29. skip: $CIRRUS_BRANCH =~ $BRANCH_PATTERN_PUBLIC
  30. build_dependant_task_template: &BUILD_DEPENDANT_TASK_TEMPLATE
  31. depends_on: build
  32. nightly_task_template: &NIGHTLY_TASK_TEMPLATE
  33. only_if: $CIRRUS_BRANCH == $BRANCH_NIGHTLY
  34. except_nightly_task_template: &EXCEPT_ON_NIGHTLY_TASK_TEMPLATE
  35. only_if: $CIRRUS_BRANCH != $BRANCH_NIGHTLY
  36. database_related_nightly_task_template: &DATABASE_RELATED_NIGHTLY_TASK_TEMPLATE
  37. only_if: >-
  38. $CIRRUS_BRANCH == $BRANCH_NIGHTLY ||
  39. changesInclude('server/sonar-db-dao/**/*Mapper.xml', 'server/sonar-db-migration/**/DbVersion*.java', 'server/sonar-db-dao/**/*Dao.java', 'server/sonar-db-core/src/main/java/org/sonar/db/*.java')
  40. saml_nightly_task_template: &SAML_NIGHTLY_TASK_TEMPLATE
  41. only_if: >-
  42. $CIRRUS_BRANCH == $BRANCH_NIGHTLY ||
  43. changesInclude('server/sonar-auth-saml/src/main/java/**/*.java', 'server/sonar-auth-saml/src/main/resources/**/*', 'server/sonar-db-dao/src/main/**/SAML*.java', 'private/it-core/src/test/java/org/sonarqube/tests/saml/*.java', 'server/sonar-webserver-webapi/src/main/java/org/sonar/server/saml/**/*.java')
  44. ldap_nightly_task_template: &LDAP_NIGHTLY_TASK_TEMPLATE
  45. only_if: >-
  46. $CIRRUS_BRANCH == $BRANCH_NIGHTLY ||
  47. changesInclude('server/sonar-auth-ldap/src/main/java/**/*.java', 'server/sonar-webserver-auth/src/main/java/org/sonar/server/authentication/LdapCredentialsAuthentication.java', 'private/it-core/src/test/java/org/sonarqube/tests/ldap/*.java')
  48. github_nightly_task_template: &GITHUB_NIGHTLY_TASK_TEMPLATE
  49. only_if: >-
  50. $CIRRUS_BRANCH == $BRANCH_NIGHTLY ||
  51. changesInclude('private/core-extension-developer-server/src/main/java/com/sonarsource/branch/pr/github/*.java', 'private/it-branch/it-tests/src/test/java/com/sonarsource/branch/it/suite/pr/github/*.java')
  52. docker_build_container_template: &GKE_CONTAINER_TEMPLATE
  53. dockerfile: private/docker/Dockerfile-build
  54. builder_image_project: sonarqube-team
  55. builder_image_name: family/docker-builder
  56. cluster_name: cirrus-ci-cluster
  57. zone: us-central1-a
  58. namespace: default
  59. cpu: 1
  60. memory: 2Gb
  61. oracle_additional_container_template: &ORACLE_ADDITIONAL_CONTAINER_TEMPLATE
  62. name: oracle
  63. image: gvenzl/oracle-xe:21-faststart
  64. port: 1521
  65. cpu: 2
  66. memory: 5Gb
  67. env:
  68. ORACLE_PASSWORD: sonarqube
  69. APP_USER: sonarqube
  70. APP_USER_PASSWORD: sonarqube
  71. postgres_additional_container_template: &POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  72. name: postgres
  73. image: postgres:15
  74. port: 5432
  75. cpu: 1
  76. memory: 1Gb
  77. env:
  78. POSTGRES_USER: postgres
  79. POSTGRES_PASSWORD: postgres
  80. default_artifact_template: &DEFAULT_ARTIFACTS_TEMPLATE
  81. on_failure:
  82. jest_junit_cleanup_script: >
  83. find . -type f -wholename "**/build/test-results/test-jest/junit.xml" -exec
  84. xmlstarlet edit --inplace --delete '//testsuite[@errors=0 and @failures=0]' {} \;
  85. junit_artifacts:
  86. path: "**/build/test-results/**/*.xml"
  87. type: "text/xml"
  88. format: junit
  89. reports_artifacts:
  90. path: "**/build/reports/**/*"
  91. screenshots_artifacts:
  92. path: "**/build/screenshots/**/*"
  93. always:
  94. profile_artifacts:
  95. path: "**/build/reports/profile/**/*"
  96. yarn_cache_template: &YARN_CACHE_TEMPLATE
  97. yarn_cache:
  98. folder: "~/.yarn/berry/cache"
  99. fingerprint_script: |
  100. cat \
  101. server/sonar-web/yarn.lock \
  102. private/core-extension-developer-server/yarn.lock \
  103. private/core-extension-enterprise-server/yarn.lock \
  104. private/core-extension-license/yarn.lock \
  105. private/core-extension-securityreport/yarn.lock
  106. gradle_cache_template: &GRADLE_CACHE_TEMPLATE
  107. gradle_cache:
  108. folder: "~/.gradle/caches"
  109. fingerprint_script: find -type f \( -name "*.gradle*" -or -name "gradle*.properties" \) -exec cat {} +
  110. jar_cache_template: &JAR_CACHE_TEMPLATE
  111. jar_cache:
  112. folder: "**/build/libs/*.jar"
  113. fingerprint_key: jar-cache_$CIRRUS_BUILD_ID
  114. eslint_report_cache_template: &ESLINT_REPORT_CACHE_TEMPLATE
  115. eslint_report_cache:
  116. folders:
  117. - server/sonar-web/eslint-report/
  118. - private/core-extension-securityreport/eslint-report/
  119. - private/core-extension-license/eslint-report/
  120. - private/core-extension-enterprise-server/eslint-report/
  121. - private/core-extension-developer-server/eslint-report/
  122. fingerprint_script: echo $CIRRUS_BUILD_ID
  123. jest_report_cache_template: &JEST_REPORT_CACHE_TEMPLATE
  124. jest_report_cache:
  125. folders:
  126. - server/sonar-web/coverage/
  127. - private/core-extension-securityreport/coverage/
  128. - private/core-extension-license/coverage/
  129. - private/core-extension-enterprise-server/coverage/
  130. - private/core-extension-developer-server/coverage/
  131. fingerprint_script: echo $CIRRUS_BUILD_ID
  132. junit_report_cache_template: &JUNIT_REPORT_CACHE_TEMPLATE
  133. junit_report_cache:
  134. folders:
  135. - "**/reports/jacoco"
  136. - "**/test-results/test"
  137. fingerprint_script: echo $CIRRUS_BUILD_ID
  138. default_template: &DEFAULT_TEMPLATE
  139. <<: *SKIP_PUBLIC_BRANCHES_TEMPLATE
  140. clone_script: |
  141. git init
  142. git remote add origin https://x-access-token:${CIRRUS_REPO_CLONE_TOKEN}@github.com/${CIRRUS_REPO_FULL_NAME}.git
  143. git fetch origin $CIRRUS_CHANGE_IN_REPO $FETCH_DEPTH
  144. git reset --hard $CIRRUS_CHANGE_IN_REPO
  145. env:
  146. FETCH_DEPTH: --depth=1
  147. build_task:
  148. <<: *DEFAULT_TEMPLATE
  149. <<: *GRADLE_CACHE_TEMPLATE
  150. <<: *YARN_CACHE_TEMPLATE
  151. <<: *JAR_CACHE_TEMPLATE
  152. gke_container:
  153. <<: *GKE_CONTAINER_TEMPLATE
  154. cpu: 7.5
  155. memory: 8Gb
  156. elasticsearch_distribution_cache:
  157. folder: sonar-application/build/elasticsearch-**.tar.gz
  158. script:
  159. - ./private/cirrus/cirrus-build.sh
  160. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  161. publish_task:
  162. <<: *DEFAULT_TEMPLATE
  163. <<: *GRADLE_CACHE_TEMPLATE
  164. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  165. gke_container:
  166. <<: *GKE_CONTAINER_TEMPLATE
  167. cpu: 4
  168. memory: 4Gb
  169. env:
  170. ORG_GRADLE_PROJECT_signingKey: VAULT[development/kv/data/sign data.key]
  171. ORG_GRADLE_PROJECT_signingPassword: VAULT[development/kv/data/sign data.passphrase]
  172. ORG_GRADLE_PROJECT_signingKeyId: VAULT[development/kv/data/sign data.key_id]
  173. script:
  174. - ./private/cirrus/cirrus-publish.sh
  175. yarn_lint_task:
  176. <<: *DEFAULT_TEMPLATE
  177. <<: *GRADLE_CACHE_TEMPLATE
  178. <<: *YARN_CACHE_TEMPLATE
  179. <<: *ESLINT_REPORT_CACHE_TEMPLATE
  180. gke_container:
  181. <<: *GKE_CONTAINER_TEMPLATE
  182. cpu: 2
  183. memory: 4Gb
  184. script:
  185. - ./private/cirrus/cirrus-yarn-lint-report.sh
  186. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  187. yarn_check_task:
  188. <<: *DEFAULT_TEMPLATE
  189. <<: *GRADLE_CACHE_TEMPLATE
  190. <<: *YARN_CACHE_TEMPLATE
  191. gke_container:
  192. <<: *GKE_CONTAINER_TEMPLATE
  193. cpu: 3
  194. memory: 4Gb
  195. script: |
  196. ./private/cirrus/cirrus-env.sh YARN
  197. gradle yarn_check-ci --profile
  198. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  199. yarn_validate_task:
  200. <<: *DEFAULT_TEMPLATE
  201. <<: *GRADLE_CACHE_TEMPLATE
  202. <<: *YARN_CACHE_TEMPLATE
  203. <<: *JEST_REPORT_CACHE_TEMPLATE
  204. gke_container:
  205. <<: *GKE_CONTAINER_TEMPLATE
  206. cpu: 7.5
  207. memory: 20Gb
  208. script:
  209. - ./private/cirrus/cirrus-yarn-validate-ci.sh
  210. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  211. junit_task:
  212. <<: *DEFAULT_TEMPLATE
  213. <<: *GRADLE_CACHE_TEMPLATE
  214. <<: *JUNIT_REPORT_CACHE_TEMPLATE
  215. gke_container:
  216. <<: *GKE_CONTAINER_TEMPLATE
  217. cpu: 7.5
  218. memory: 10Gb
  219. script:
  220. - ./private/cirrus/cirrus-junit.sh
  221. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  222. sq_analysis_task:
  223. <<: *SKIP_PUBLIC_BRANCHES_TEMPLATE
  224. <<: *EXCEPT_ON_NIGHTLY_TASK_TEMPLATE
  225. <<: *GRADLE_CACHE_TEMPLATE
  226. <<: *YARN_CACHE_TEMPLATE
  227. <<: *JEST_REPORT_CACHE_TEMPLATE
  228. <<: *ESLINT_REPORT_CACHE_TEMPLATE
  229. <<: *JUNIT_REPORT_CACHE_TEMPLATE
  230. depends_on:
  231. - yarn_validate
  232. - yarn_lint
  233. - junit
  234. gke_container:
  235. <<: *GKE_CONTAINER_TEMPLATE
  236. cpu: 7.5
  237. memory: 15Gb
  238. script:
  239. - ./private/cirrus/cirrus-sq-analysis.sh
  240. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  241. qa_task:
  242. <<: *DEFAULT_TEMPLATE
  243. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  244. <<: *GRADLE_CACHE_TEMPLATE
  245. <<: *JAR_CACHE_TEMPLATE
  246. gke_container:
  247. <<: *GKE_CONTAINER_TEMPLATE
  248. cpu: 2
  249. memory: 6Gb
  250. additional_containers:
  251. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  252. env:
  253. matrix:
  254. # QA name should not exceed 13 characters to be properly reported on wallboard by burgr
  255. # QA name cannot contain "_"
  256. - QA_CATEGORY: Cat1
  257. - QA_CATEGORY: Cat2
  258. - QA_CATEGORY: Cat3
  259. - QA_CATEGORY: Cat4
  260. - QA_CATEGORY: Cat5
  261. - QA_CATEGORY: Cat6
  262. - QA_CATEGORY: Analysis
  263. - QA_CATEGORY: Authorization
  264. - QA_CATEGORY: Auth
  265. - QA_CATEGORY: Branch1
  266. - QA_CATEGORY: Branch2
  267. - QA_CATEGORY: CE1
  268. - QA_CATEGORY: CE2
  269. - QA_CATEGORY: ComputeEngine
  270. - QA_CATEGORY: DE1
  271. - QA_CATEGORY: DE2
  272. - QA_CATEGORY: EE1
  273. - QA_CATEGORY: EE2
  274. - QA_CATEGORY: Issues1
  275. - QA_CATEGORY: Issues2
  276. - QA_CATEGORY: License1
  277. - QA_CATEGORY: License2
  278. - QA_CATEGORY: Plugins
  279. - QA_CATEGORY: Project
  280. - QA_CATEGORY: QP
  281. - QA_CATEGORY: Upgrade
  282. script:
  283. - ./private/cirrus/cirrus-qa.sh postgres
  284. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  285. task: #bitbucket
  286. <<: *DEFAULT_TEMPLATE
  287. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  288. <<: *NIGHTLY_TASK_TEMPLATE
  289. <<: *JAR_CACHE_TEMPLATE
  290. <<: *GRADLE_CACHE_TEMPLATE
  291. gke_container:
  292. <<: *GKE_CONTAINER_TEMPLATE
  293. cpu: 3
  294. memory: 10Gb
  295. additional_containers:
  296. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  297. maven_cache:
  298. folder: ~/.m2
  299. env:
  300. QA_CATEGORY: BITBUCKET
  301. matrix:
  302. - name: qa_bb_5.15.0
  303. bitbucket_background_script: ./private/cirrus/cirrus-start-bitbucket.sh 5.15.0
  304. - name: qa_bb_latest
  305. bitbucket_background_script: ./private/cirrus/cirrus-start-bitbucket.sh LATEST
  306. wait_for_bitbucket_to_boot_script: secs=3600; endTime=$(( $(date +%s) + secs )); while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:7990/bitbucket/status)" != "200" ]] || [ $(date +%s) -gt $endTime ]; do sleep 5; done
  307. script:
  308. - ./private/cirrus/cirrus-qa.sh postgres
  309. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  310. qa_bb_cloud_task:
  311. <<: *DEFAULT_TEMPLATE
  312. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  313. <<: *NIGHTLY_TASK_TEMPLATE
  314. <<: *JAR_CACHE_TEMPLATE
  315. <<: *GRADLE_CACHE_TEMPLATE
  316. gke_container:
  317. <<: *GKE_CONTAINER_TEMPLATE
  318. cpu: 2.4
  319. memory: 5Gb
  320. env:
  321. QA_CATEGORY: BITBUCKET_CLOUD
  322. BBC_CLIENT_ID: VAULT[development/team/sonarqube/kv/data/bitbucket-cloud data.client_id]
  323. BBC_CLIENT_SECRET: VAULT[development/team/sonarqube/kv/data/bitbucket-cloud data.client_secret]
  324. BBC_USERNAME: VAULT[development/kv/data/bitbucket/sonarqube-its data.username]
  325. BBC_READ_REPOS_APP_PASSWORD: VAULT[development/kv/data/bitbucket/sonarqube-its data.password]
  326. script:
  327. - ./private/cirrus/cirrus-qa.sh h2
  328. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  329. qa_ha_task:
  330. <<: *DEFAULT_TEMPLATE
  331. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  332. <<: *NIGHTLY_TASK_TEMPLATE
  333. <<: *JAR_CACHE_TEMPLATE
  334. <<: *GRADLE_CACHE_TEMPLATE
  335. gke_container:
  336. <<: *GKE_CONTAINER_TEMPLATE
  337. cpu: 2.4
  338. memory: 10Gb
  339. additional_containers:
  340. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  341. env:
  342. QA_CATEGORY: HA
  343. script:
  344. - ./private/cirrus/cirrus-qa.sh postgres
  345. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  346. docker_gitlab_container_build_task:
  347. <<: *DEFAULT_TEMPLATE
  348. <<: *NIGHTLY_TASK_TEMPLATE
  349. gce_instance:
  350. image_project: sonarqube-team
  351. image_family: docker-builder
  352. zone: us-central1-a
  353. preemptible: true
  354. disk: 10
  355. cpu: 4
  356. memory: 8G
  357. env:
  358. matrix:
  359. - GITLAB_TAG: latest
  360. - GITLAB_TAG: 15.6.2-ce.0
  361. build_script:
  362. - docker pull "us.gcr.io/sonarqube-team/sq-gitlab:${GITLAB_TAG}" || true
  363. - docker build --build-arg "GITLAB_TAG=${GITLAB_TAG}" --cache-from "us.gcr.io/sonarqube-team/sq-gitlab:${GITLAB_TAG}" -t "us.gcr.io/sonarqube-team/sq-gitlab:${GITLAB_TAG}" private/docker/gitlab/
  364. - docker push "us.gcr.io/sonarqube-team/sq-gitlab:${GITLAB_TAG}"
  365. # GitLab QA is executed in a dedicated task in order to not slow down the pipeline, as a GitLab on-prem server docker image is required.
  366. qa_gitlab_task:
  367. <<: *DEFAULT_TEMPLATE
  368. <<: *NIGHTLY_TASK_TEMPLATE
  369. <<: *JAR_CACHE_TEMPLATE
  370. <<: *GRADLE_CACHE_TEMPLATE
  371. depends_on:
  372. - build
  373. - docker_gitlab_container_build
  374. gke_container:
  375. <<: *GKE_CONTAINER_TEMPLATE
  376. cpu: 2.4
  377. memory: 5Gb
  378. use_in_memory_disk: true
  379. additional_containers:
  380. - name: gitlab
  381. ports:
  382. - 80
  383. - 443
  384. cpu: 2
  385. memory: 5Gb
  386. matrix:
  387. - image: us.gcr.io/sonarqube-team/sq-gitlab:latest
  388. - image: us.gcr.io/sonarqube-team/sq-gitlab:15.6.2-ce.0
  389. env:
  390. QA_CATEGORY: GITLAB
  391. script:
  392. - ./private/cirrus/cirrus-qa.sh h2
  393. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  394. qa_gitlab_cloud_task:
  395. <<: *DEFAULT_TEMPLATE
  396. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  397. <<: *NIGHTLY_TASK_TEMPLATE
  398. <<: *JAR_CACHE_TEMPLATE
  399. <<: *GRADLE_CACHE_TEMPLATE
  400. gke_container:
  401. <<: *GKE_CONTAINER_TEMPLATE
  402. cpu: 2.4
  403. memory: 5Gb
  404. use_in_memory_disk: true
  405. env:
  406. QA_CATEGORY: GITLAB_CLOUD
  407. GITLAB_API_TOKEN: VAULT[development/team/sonarqube/kv/data/gitlab-cloud data.api_token]
  408. GITLAB_READ_ONLY_TOKEN: VAULT[development/team/sonarqube/kv/data/gitlab-cloud data.api_token_ro]
  409. GITLAB_ADMIN_USERNAME: VAULT[development/team/sonarqube/kv/data/gitlab-cloud data.username]
  410. GITLAB_ADMIN_PASSWORD: VAULT[development/team/sonarqube/kv/data/gitlab-cloud data.password]
  411. script:
  412. - ./private/cirrus/cirrus-qa.sh h2
  413. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  414. # Azure QA is executed in a dedicated task in order to not slow down the pipeline.
  415. qa_azure_task:
  416. <<: *DEFAULT_TEMPLATE
  417. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  418. <<: *NIGHTLY_TASK_TEMPLATE
  419. <<: *JAR_CACHE_TEMPLATE
  420. <<: *GRADLE_CACHE_TEMPLATE
  421. gke_container:
  422. <<: *GKE_CONTAINER_TEMPLATE
  423. cpu: 2.4
  424. memory: 5Gb
  425. env:
  426. QA_CATEGORY: AZURE
  427. AZURE_USERNAME_LOGIN: VAULT[development/team/sonarqube/kv/data/azure-instance data.username]
  428. AZURE_CODE_READ_AND_WRITE_TOKEN: VAULT[development/team/sonarqube/kv/data/azure-instance data.token_code_read_write]
  429. AZURE_FULL_ACCESS_TOKEN: VAULT[development/team/sonarqube/kv/data/azure-instance data.token_full_access]
  430. script:
  431. - ./private/cirrus/cirrus-qa.sh h2
  432. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  433. qa_github_task:
  434. <<: *DEFAULT_TEMPLATE
  435. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  436. <<: *GITHUB_NIGHTLY_TASK_TEMPLATE
  437. <<: *JAR_CACHE_TEMPLATE
  438. <<: *GRADLE_CACHE_TEMPLATE
  439. gke_container:
  440. <<: *GKE_CONTAINER_TEMPLATE
  441. cpu: 2.4
  442. memory: 5Gb
  443. env:
  444. QA_CATEGORY: GITHUB
  445. GITHUB_COM_CODE_SCANNING_ALERTS_TECHNICAL_USER_USERNAME: QA-task
  446. GITHUB_COM_CODE_SCANNING_ALERTS_TECHNICAL_USER_TOKEN: VAULT[development/github/token/SonarSource-sonar-enterprise-code-scanning token]
  447. script:
  448. - ./private/cirrus/cirrus-qa.sh h2
  449. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  450. # SAML QA is executed in a dedicated task in order to not slow down the pipeline, as a Keycloak server docker image is required.
  451. qa_saml_task:
  452. <<: *DEFAULT_TEMPLATE
  453. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  454. <<: *SAML_NIGHTLY_TASK_TEMPLATE
  455. <<: *JAR_CACHE_TEMPLATE
  456. <<: *GRADLE_CACHE_TEMPLATE
  457. gke_container:
  458. <<: *GKE_CONTAINER_TEMPLATE
  459. cpu: 2.4
  460. memory: 10Gb
  461. additional_containers:
  462. - name: keycloak
  463. image: quay.io/keycloak/keycloak:17.0.1
  464. port: 8080
  465. cpu: 1
  466. memory: 1Gb
  467. command: "/opt/keycloak/bin/kc.sh start-dev --http-relative-path /auth"
  468. env:
  469. KEYCLOAK_ADMIN: admin
  470. KEYCLOAK_ADMIN_PASSWORD: admin
  471. env:
  472. QA_CATEGORY: SAML
  473. script:
  474. - ./private/cirrus/cirrus-qa.sh h2
  475. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  476. # LDAP QA is executed in a dedicated task in order to not slow down the pipeline, as a LDAP server and SonarQube server are re-started on each test.
  477. qa_ldap_task:
  478. <<: *DEFAULT_TEMPLATE
  479. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  480. <<: *LDAP_NIGHTLY_TASK_TEMPLATE
  481. <<: *JAR_CACHE_TEMPLATE
  482. <<: *GRADLE_CACHE_TEMPLATE
  483. gke_container:
  484. <<: *GKE_CONTAINER_TEMPLATE
  485. cpu: 2.4
  486. memory: 10Gb
  487. env:
  488. QA_CATEGORY: LDAP
  489. script:
  490. - ./private/cirrus/cirrus-qa.sh h2
  491. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  492. promote_task:
  493. <<: *DEFAULT_TEMPLATE
  494. <<: *EXCEPT_ON_NIGHTLY_TASK_TEMPLATE
  495. depends_on:
  496. - build
  497. - sq_analysis
  498. - qa
  499. - qa_saml
  500. - qa_ldap
  501. - publish
  502. gke_container:
  503. <<: *GKE_CONTAINER_TEMPLATE
  504. memory: 512M
  505. stateful: true
  506. script:
  507. - ./private/cirrus/cirrus-promote.sh
  508. package_docker_task:
  509. <<: *DEFAULT_TEMPLATE
  510. depends_on: promote
  511. only_if: $CIRRUS_BRANCH == $BRANCH_MAIN
  512. gce_instance:
  513. image_project: sonarqube-team
  514. image_family: docker-builder
  515. zone: us-central1-a
  516. disk: 10
  517. cpu: 4
  518. memory: 8G
  519. clone_script: |
  520. git clone --recursive --branch=$CIRRUS_BRANCH https://x-access-token:${CIRRUS_REPO_CLONE_TOKEN}@github.com/${CIRRUS_REPO_FULL_NAME}.git $CIRRUS_WORKING_DIR --depth=1
  521. git fetch origin $CIRRUS_CHANGE_IN_REPO --depth=1
  522. git reset --hard $CIRRUS_CHANGE_IN_REPO
  523. install_tooling_script:
  524. - ./private/cirrus/cirrus-tooling-for-package-docker.sh
  525. package_script:
  526. - ./private/cirrus/cirrus-package-docker.sh
  527. sql_mssql_task:
  528. <<: *DEFAULT_TEMPLATE
  529. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  530. <<: *DATABASE_RELATED_NIGHTLY_TASK_TEMPLATE
  531. <<: *GRADLE_CACHE_TEMPLATE
  532. gke_container:
  533. <<: *GKE_CONTAINER_TEMPLATE
  534. memory: 5Gb
  535. additional_containers:
  536. - name: mssql
  537. image: mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04
  538. port: 1433
  539. cpu: 2
  540. memory: 5Gb
  541. env:
  542. MSSQL_PID: Developer # this is the default edition
  543. ACCEPT_EULA: Y
  544. SA_PASSWORD: sonarqube!1
  545. script:
  546. - ./private/cirrus/cirrus-db-unit-test.sh mssql
  547. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  548. sql_postgres_task:
  549. <<: *DEFAULT_TEMPLATE
  550. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  551. <<: *DATABASE_RELATED_NIGHTLY_TASK_TEMPLATE
  552. <<: *GRADLE_CACHE_TEMPLATE
  553. gke_container:
  554. <<: *GKE_CONTAINER_TEMPLATE
  555. memory: 5Gb
  556. additional_containers:
  557. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  558. script:
  559. - ./private/cirrus/cirrus-db-unit-test.sh postgres
  560. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  561. # this is the oldest compatible version of PostgreSQL
  562. sql_postgres11_task:
  563. <<: *DEFAULT_TEMPLATE
  564. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  565. <<: *DATABASE_RELATED_NIGHTLY_TASK_TEMPLATE
  566. <<: *GRADLE_CACHE_TEMPLATE
  567. gke_container:
  568. <<: *GKE_CONTAINER_TEMPLATE
  569. memory: 5Gb
  570. additional_containers:
  571. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  572. image: postgres:11
  573. script:
  574. - ./private/cirrus/cirrus-db-unit-test.sh postgres
  575. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  576. sql_oracle21_task:
  577. <<: *DEFAULT_TEMPLATE
  578. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  579. <<: *DATABASE_RELATED_NIGHTLY_TASK_TEMPLATE
  580. <<: *GRADLE_CACHE_TEMPLATE
  581. gke_container:
  582. <<: *GKE_CONTAINER_TEMPLATE
  583. memory: 5Gb
  584. additional_containers:
  585. - <<: *ORACLE_ADDITIONAL_CONTAINER_TEMPLATE
  586. script:
  587. - ./private/cirrus/cirrus-db-unit-test.sh oracle21
  588. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  589. upgd_mssql_task:
  590. <<: *DEFAULT_TEMPLATE
  591. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  592. <<: *DATABASE_RELATED_NIGHTLY_TASK_TEMPLATE
  593. <<: *JAR_CACHE_TEMPLATE
  594. <<: *GRADLE_CACHE_TEMPLATE
  595. gke_container:
  596. <<: *GKE_CONTAINER_TEMPLATE
  597. cpu: 1.5
  598. memory: 6Gb
  599. additional_containers:
  600. - name: mssql
  601. image: mcr.microsoft.com/mssql/server:2022-latest
  602. port: 1433
  603. cpu: 2
  604. memory: 5Gb
  605. env:
  606. MSSQL_PID: Developer # this is the default edition
  607. ACCEPT_EULA: Y
  608. SA_PASSWORD: sonarqube!1
  609. env:
  610. QA_CATEGORY: Upgrade
  611. script:
  612. - ./private/cirrus/cirrus-qa.sh mssql
  613. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  614. upgd_oracle21_task:
  615. <<: *DEFAULT_TEMPLATE
  616. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  617. <<: *DATABASE_RELATED_NIGHTLY_TASK_TEMPLATE
  618. <<: *JAR_CACHE_TEMPLATE
  619. <<: *GRADLE_CACHE_TEMPLATE
  620. gke_container:
  621. <<: *GKE_CONTAINER_TEMPLATE
  622. cpu: 1.5
  623. memory: 6Gb
  624. additional_containers:
  625. - <<: *ORACLE_ADDITIONAL_CONTAINER_TEMPLATE
  626. env:
  627. QA_CATEGORY: Upgrade
  628. script:
  629. - ./private/cirrus/cirrus-qa.sh oracle21
  630. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  631. ws_scan_task:
  632. <<: *DEFAULT_TEMPLATE
  633. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  634. only_if: >-
  635. $CIRRUS_BRANCH == $BRANCH_MAIN ||
  636. ($CIRRUS_BRANCH =~ $BRANCH_PATTERN_MAINTENANCE && $CIRRUS_BRANCH != $BRANCH_NIGHTLY)
  637. <<: *YARN_CACHE_TEMPLATE
  638. <<: *GRADLE_CACHE_TEMPLATE
  639. timeout_in: 30m
  640. gke_container:
  641. <<: *GKE_CONTAINER_TEMPLATE
  642. cpu: 2
  643. memory: 4Gb
  644. env:
  645. WS_APIKEY: VAULT[development/kv/data/mend data.apikey]
  646. WS_WSS_URL: VAULT[development/kv/data/mend data.url]
  647. WS_USERKEY: VAULT[development/kv/data/mend data.userKey]
  648. SLACK_WEBHOOK_SQ: VAULT[development/kv/data/slack data.webhook]
  649. whitesource_script:
  650. - ./private/cirrus/cirrus-whitesource-scan.sh
  651. allow_failures: "true"
  652. on_failure:
  653. slack_notification_script:
  654. - ./private/cirrus/cirrus-whitesource-notifications.sh
  655. always:
  656. ws_artifacts:
  657. path: "whitesource/**/*"