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 27KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798
  1. env:
  2. 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"
  3. # to be replaced by other credentials
  4. ARTIFACTORY_PRIVATE_USERNAME: vault-${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-private-reader
  5. ARTIFACTORY_PRIVATE_PASSWORD: VAULT[development/artifactory/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-private-reader access_token]
  6. ARTIFACTORY_DEPLOY_USERNAME: vault-${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-qa-deployer
  7. ARTIFACTORY_DEPLOY_PASSWORD: VAULT[development/artifactory/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-qa-deployer access_token]
  8. ARTIFACTORY_ACCESS_TOKEN: VAULT[development/artifactory/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-private-reader access_token]
  9. ARTIFACTORY_PROMOTE_ACCESS_TOKEN: VAULT[development/artifactory/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-promoter access_token]
  10. # download licenses for testing commercial editions
  11. GITHUB_TOKEN: VAULT[development/github/token/licenses-ro token]
  12. # notifications to burgr
  13. BURGR_URL: VAULT[development/kv/data/burgr data.url]
  14. BURGR_USERNAME: VAULT[development/kv/data/burgr data.cirrus_username]
  15. BURGR_PASSWORD: VAULT[development/kv/data/burgr data.cirrus_password]
  16. # analysis on next.sonarqube.com
  17. SONARQUBE_NEXT_TOKEN: VAULT[development/kv/data/next data.token]
  18. # to trigger docs deployment
  19. ELASTIC_PWD: VAULT[development/team/sonarqube/kv/data/elasticsearch-cloud data.password]
  20. CIRRUS_LOG_TIMESTAMP: true
  21. BRANCH_MAIN: "master"
  22. BRANCH_NIGHTLY: "branch-nightly-build"
  23. BRANCH_PATTERN_MAINTENANCE: "branch-.*"
  24. BRANCH_PATTERN_PUBLIC: "public_.*"
  25. auto_cancellation: $CIRRUS_BRANCH != $BRANCH_MAIN && $CIRRUS_BRANCH !=~ $BRANCH_PATTERN_MAINTENANCE
  26. skip_public_branches_template: &SKIP_PUBLIC_BRANCHES_TEMPLATE
  27. skip: $CIRRUS_BRANCH =~ $BRANCH_PATTERN_PUBLIC
  28. cache_dependencies_dependant_task_template:
  29. &CACHE_DEPENDENCIES_DEPENDANT_TASK_TEMPLATE
  30. depends_on: cache_dependencies
  31. build_dependant_task_template: &BUILD_DEPENDANT_TASK_TEMPLATE
  32. depends_on: build
  33. master_and_nightly_task_template: &MASTER_AND_NIGHTLY_TASK_TEMPLATE
  34. only_if: $CIRRUS_BRANCH == $BRANCH_NIGHTLY || $CIRRUS_BRANCH == $BRANCH_MAIN
  35. master_or_nightly_or_maintenance_task_template:
  36. &MASTER_OR_NIGHTLY_OR_MAINTENANCE_TASK_TEMPLATE
  37. only_if: $CIRRUS_BRANCH == $BRANCH_NIGHTLY || $CIRRUS_BRANCH == $BRANCH_MAIN || $CIRRUS_BRANCH =~ $BRANCH_PATTERN_MAINTENANCE
  38. except_nightly_task_template: &EXCEPT_ON_NIGHTLY_TASK_TEMPLATE
  39. only_if: $CIRRUS_BRANCH != $BRANCH_NIGHTLY
  40. database_related_task_template: &DATABASE_RELATED_TASK_TEMPLATE
  41. only_if: >-
  42. $CIRRUS_BRANCH == $BRANCH_MAIN || $CIRRUS_BRANCH =~ $BRANCH_PATTERN_MAINTENANCE || $CIRRUS_BRANCH == $BRANCH_NIGHTLY ||
  43. 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')
  44. saml_task_template: &SAML_TASK_TEMPLATE
  45. only_if: >-
  46. $CIRRUS_BRANCH == $BRANCH_MAIN || $CIRRUS_BRANCH =~ $BRANCH_PATTERN_MAINTENANCE || $CIRRUS_BRANCH == $BRANCH_NIGHTLY ||
  47. 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')
  48. ldap_task_template: &LDAP_TASK_TEMPLATE
  49. only_if: >-
  50. $CIRRUS_BRANCH == $BRANCH_MAIN || $CIRRUS_BRANCH =~ $BRANCH_PATTERN_MAINTENANCE || $CIRRUS_BRANCH == $BRANCH_NIGHTLY ||
  51. 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')
  52. github_task_template: &GITHUB_TASK_TEMPLATE
  53. only_if: >-
  54. $CIRRUS_BRANCH == $BRANCH_MAIN || $CIRRUS_BRANCH =~ $BRANCH_PATTERN_MAINTENANCE || $CIRRUS_BRANCH == $BRANCH_NIGHTLY ||
  55. changesInclude('private/core-extension-developer-server/src/main/java/com/sonarsource/branch/pr/github/**/*.java',
  56. 'private/core-extension-developer-server/src/main/java/com/sonarsource/github/**/*.java',
  57. 'private/it-branch/it-tests/src/test/java/com/sonarsource/branch/it/suite/pr/github/**/*.java',
  58. 'private/it-branch/it-tests/src/test/java/com/sonarsource/provisioning/github/*.java'
  59. )
  60. gitlab_task_template: &GITLAB_TASK_TEMPLATE
  61. only_if: >-
  62. $CIRRUS_BRANCH == $BRANCH_MAIN || $CIRRUS_BRANCH =~ $BRANCH_PATTERN_MAINTENANCE || $CIRRUS_BRANCH == $BRANCH_NIGHTLY ||
  63. changesInclude('private/core-extension-developer-server/src/main/java/com/sonarsource/branch/pr/gitlab/**/*.java', 'private/it-branch/it-tests/src/test/java/com/sonarsource/branch/it/suite/pr/gitlab/**/*.java')
  64. azure_task_template: &AZURE_TASK_TEMPLATE
  65. only_if: >-
  66. $CIRRUS_BRANCH == $BRANCH_MAIN || $CIRRUS_BRANCH =~ $BRANCH_PATTERN_MAINTENANCE || $CIRRUS_BRANCH == $BRANCH_NIGHTLY ||
  67. changesInclude('private/core-extension-developer-server/src/main/java/com/sonarsource/branch/pr/azuredevops/**/*.java', 'private/it-branch/it-tests/src/test/java/com/sonarsource/branch/it/suite/pr/azure/**/*.java')
  68. bitbucket_server_task_template: &BITBUCKET_SERVER_TASK_TEMPLATE
  69. only_if: >-
  70. $CIRRUS_BRANCH == $BRANCH_MAIN || $CIRRUS_BRANCH =~ $BRANCH_PATTERN_MAINTENANCE || $CIRRUS_BRANCH == $BRANCH_NIGHTLY ||
  71. changesInclude('private/core-extension-developer-server/src/main/java/com/sonarsource/branch/pr/bitbucketserver/**/*.java', 'private/it-branch/it-tests/src/test/java/com/sonarsource/branch/it/suite/pr/bitbucketserver/**/*.java')
  72. bitbucket_cloud_task_template: &BITBUCKET_CLOUD_TASK_TEMPLATE
  73. only_if: >-
  74. $CIRRUS_BRANCH == $BRANCH_MAIN || $CIRRUS_BRANCH =~ $BRANCH_PATTERN_MAINTENANCE || $CIRRUS_BRANCH == $BRANCH_NIGHTLY ||
  75. changesInclude('private/core-extension-developer-server/src/main/java/com/sonarsource/branch/pr/bitbucket/**/*.java', 'private/it-branch/it-tests/src/test/java/com/sonarsource/branch/it/suite/pr/bitbucketcloud/**/*.java')
  76. docker_build_container_template: &CONTAINER_TEMPLATE
  77. region: eu-central-1
  78. cluster_name: ${CIRRUS_CLUSTER_NAME}
  79. namespace: default
  80. builder_subnet_id: ${CIRRUS_AWS_SUBNET}
  81. builder_role: cirrus-builder
  82. builder_image: docker-builder-v*
  83. builder_instance_type: t2.small
  84. dockerfile: private/docker/Dockerfile-build
  85. docker_arguments:
  86. CIRRUS_AWS_ACCOUNT: ${CIRRUS_AWS_ACCOUNT}
  87. cpu: 1
  88. memory: 2Gb
  89. vm_instance_template: &VM_TEMPLATE
  90. experimental: true # see https://github.com/cirruslabs/cirrus-ci-docs/issues/1051
  91. image: docker-builder-v*
  92. type: t2.small
  93. region: eu-central-1
  94. subnet_id: ${CIRRUS_AWS_SUBNET}
  95. disk: 10
  96. cpu: 4
  97. memory: 8G
  98. oracle_additional_container_template: &ORACLE_ADDITIONAL_CONTAINER_TEMPLATE
  99. name: oracle
  100. image: gvenzl/oracle-xe:21-faststart
  101. port: 1521
  102. cpu: 2
  103. memory: 5Gb
  104. env:
  105. ORACLE_PASSWORD: sonarqube
  106. APP_USER: sonarqube
  107. APP_USER_PASSWORD: sonarqube
  108. postgres_additional_container_template: &POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  109. name: postgres
  110. image: public.ecr.aws/docker/library/postgres:15
  111. port: 5432
  112. cpu: 1
  113. memory: 1Gb
  114. env:
  115. POSTGRES_USER: postgres
  116. POSTGRES_PASSWORD: postgres
  117. default_artifact_template: &DEFAULT_ARTIFACTS_TEMPLATE
  118. on_failure:
  119. jest_junit_cleanup_script: >
  120. find . -type f -wholename "**/build/test-results/test-jest/junit.xml" -exec
  121. xmlstarlet edit --inplace --delete '//testsuite[@errors=0 and @failures=0]' {} \;
  122. junit_artifacts:
  123. path: "**/build/test-results/**/*.xml"
  124. type: "text/xml"
  125. format: junit
  126. reports_artifacts:
  127. path: "**/build/reports/**/*"
  128. screenshots_artifacts:
  129. path: "**/build/screenshots/**/*"
  130. always:
  131. profile_artifacts:
  132. path: "**/build/reports/profile/**/*"
  133. yarn_cache_template: &YARN_CACHE_TEMPLATE
  134. yarn_cache:
  135. folder: "~/.yarn/berry/cache"
  136. fingerprint_script: |
  137. cat \
  138. server/sonar-web/yarn.lock \
  139. private/core-extension-developer-server/yarn.lock \
  140. private/core-extension-enterprise-server/yarn.lock \
  141. private/core-extension-license/yarn.lock \
  142. private/core-extension-securityreport/yarn.lock
  143. gradle_cache_template: &GRADLE_CACHE_TEMPLATE
  144. gradle_cache:
  145. folder: "~/.gradle/caches"
  146. fingerprint_script: find -type f \( -name "*.gradle*" -or -name "gradle*.properties" \) | sort | xargs cat
  147. jar_cache_template: &JAR_CACHE_TEMPLATE
  148. jar_cache:
  149. folder: "**/build/libs/*.jar"
  150. fingerprint_key: jar-cache_$CIRRUS_BUILD_ID
  151. eslint_report_cache_template: &ESLINT_REPORT_CACHE_TEMPLATE
  152. eslint_report_cache:
  153. folders:
  154. - server/sonar-web/eslint-report/
  155. - server/sonar-web/design-system/eslint-report/
  156. - private/core-extension-securityreport/eslint-report/
  157. - private/core-extension-license/eslint-report/
  158. - private/core-extension-enterprise-server/eslint-report/
  159. - private/core-extension-developer-server/eslint-report/
  160. fingerprint_script: echo $CIRRUS_BUILD_ID
  161. jest_report_cache_template: &JEST_REPORT_CACHE_TEMPLATE
  162. jest_report_cache:
  163. folders:
  164. - server/sonar-web/coverage/
  165. - server/sonar-web/design-system/coverage/
  166. - private/core-extension-securityreport/coverage/
  167. - private/core-extension-license/coverage/
  168. - private/core-extension-enterprise-server/coverage/
  169. - private/core-extension-developer-server/coverage/
  170. fingerprint_script: echo $CIRRUS_BUILD_ID
  171. junit_report_cache_template: &JUNIT_REPORT_CACHE_TEMPLATE
  172. junit_report_cache:
  173. folders:
  174. - "**/reports/jacoco"
  175. - "**/test-results/test"
  176. fingerprint_script: echo $CIRRUS_BUILD_ID
  177. default_template: &DEFAULT_TEMPLATE
  178. <<: *SKIP_PUBLIC_BRANCHES_TEMPLATE
  179. clone_script: |
  180. git init
  181. git remote add origin https://x-access-token:${CIRRUS_REPO_CLONE_TOKEN}@github.com/${CIRRUS_REPO_FULL_NAME}.git
  182. git fetch origin $CIRRUS_CHANGE_IN_REPO $FETCH_DEPTH
  183. git reset --hard $CIRRUS_CHANGE_IN_REPO
  184. env:
  185. FETCH_DEPTH: --depth=1
  186. cache_dependencies_task:
  187. <<: *DEFAULT_TEMPLATE
  188. <<: *GRADLE_CACHE_TEMPLATE
  189. eks_container:
  190. <<: *CONTAINER_TEMPLATE
  191. cpu: 2
  192. memory: 4Gb
  193. script:
  194. - ./private/cirrus/cirrus-cache-dependencies.sh
  195. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  196. build_task:
  197. <<: *DEFAULT_TEMPLATE
  198. <<: *GRADLE_CACHE_TEMPLATE
  199. <<: *YARN_CACHE_TEMPLATE
  200. <<: *JAR_CACHE_TEMPLATE
  201. <<: *CACHE_DEPENDENCIES_DEPENDANT_TASK_TEMPLATE
  202. eks_container:
  203. <<: *CONTAINER_TEMPLATE
  204. cpu: 7.5
  205. memory: 8Gb
  206. script:
  207. - ./private/cirrus/cirrus-build.sh
  208. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  209. publish_task:
  210. <<: *DEFAULT_TEMPLATE
  211. <<: *GRADLE_CACHE_TEMPLATE
  212. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  213. eks_container:
  214. <<: *CONTAINER_TEMPLATE
  215. cpu: 4
  216. memory: 4Gb
  217. env:
  218. ORG_GRADLE_PROJECT_signingKey: VAULT[development/kv/data/sign data.key]
  219. ORG_GRADLE_PROJECT_signingPassword: VAULT[development/kv/data/sign data.passphrase]
  220. ORG_GRADLE_PROJECT_signingKeyId: VAULT[development/kv/data/sign data.key_id]
  221. script:
  222. - ./private/cirrus/cirrus-publish.sh
  223. yarn_lint_task:
  224. <<: *DEFAULT_TEMPLATE
  225. <<: *GRADLE_CACHE_TEMPLATE
  226. <<: *YARN_CACHE_TEMPLATE
  227. <<: *ESLINT_REPORT_CACHE_TEMPLATE
  228. <<: *CACHE_DEPENDENCIES_DEPENDANT_TASK_TEMPLATE
  229. eks_container:
  230. <<: *CONTAINER_TEMPLATE
  231. cpu: 3
  232. memory: 6Gb
  233. script:
  234. - ./private/cirrus/cirrus-yarn-lint-report.sh
  235. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  236. yarn_check_task:
  237. <<: *DEFAULT_TEMPLATE
  238. <<: *GRADLE_CACHE_TEMPLATE
  239. <<: *YARN_CACHE_TEMPLATE
  240. <<: *CACHE_DEPENDENCIES_DEPENDANT_TASK_TEMPLATE
  241. eks_container:
  242. <<: *CONTAINER_TEMPLATE
  243. cpu: 3
  244. memory: 4Gb
  245. script: |
  246. ./private/cirrus/cirrus-env.sh YARN
  247. gradle yarn_check-ci --profile
  248. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  249. yarn_validate_task:
  250. <<: *DEFAULT_TEMPLATE
  251. <<: *GRADLE_CACHE_TEMPLATE
  252. <<: *YARN_CACHE_TEMPLATE
  253. <<: *JEST_REPORT_CACHE_TEMPLATE
  254. <<: *CACHE_DEPENDENCIES_DEPENDANT_TASK_TEMPLATE
  255. eks_container:
  256. <<: *CONTAINER_TEMPLATE
  257. cpu: 7.5
  258. memory: 25Gb
  259. script:
  260. - ./private/cirrus/cirrus-yarn-validate-ci.sh
  261. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  262. junit_task:
  263. <<: *DEFAULT_TEMPLATE
  264. <<: *GRADLE_CACHE_TEMPLATE
  265. <<: *JUNIT_REPORT_CACHE_TEMPLATE
  266. <<: *CACHE_DEPENDENCIES_DEPENDANT_TASK_TEMPLATE
  267. eks_container:
  268. <<: *CONTAINER_TEMPLATE
  269. cpu: 7.5
  270. memory: 10Gb
  271. script:
  272. - ./private/cirrus/cirrus-junit.sh
  273. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  274. sq_analysis_task:
  275. <<: *SKIP_PUBLIC_BRANCHES_TEMPLATE
  276. <<: *EXCEPT_ON_NIGHTLY_TASK_TEMPLATE
  277. <<: *GRADLE_CACHE_TEMPLATE
  278. <<: *YARN_CACHE_TEMPLATE
  279. <<: *JEST_REPORT_CACHE_TEMPLATE
  280. <<: *ESLINT_REPORT_CACHE_TEMPLATE
  281. <<: *JUNIT_REPORT_CACHE_TEMPLATE
  282. depends_on:
  283. - yarn_validate
  284. - yarn_lint
  285. - junit
  286. eks_container:
  287. <<: *CONTAINER_TEMPLATE
  288. cpu: 7.5
  289. memory: 15Gb
  290. script:
  291. - ./private/cirrus/cirrus-sq-analysis.sh
  292. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  293. qa_task:
  294. <<: *DEFAULT_TEMPLATE
  295. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  296. <<: *CACHE_DEPENDENCIES_DEPENDANT_TASK_TEMPLATE
  297. <<: *GRADLE_CACHE_TEMPLATE
  298. <<: *JAR_CACHE_TEMPLATE
  299. eks_container:
  300. <<: *CONTAINER_TEMPLATE
  301. cpu: 3
  302. memory: 7Gb
  303. additional_containers:
  304. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  305. name: QA $QA_CATEGORY
  306. alias: qa
  307. env:
  308. matrix:
  309. # QA name should not exceed 13 characters to be properly reported on wallboard by burgr
  310. # QA name cannot contain "_"
  311. - QA_CATEGORY: Cat1
  312. - QA_CATEGORY: Cat2
  313. - QA_CATEGORY: Cat3
  314. - QA_CATEGORY: Cat4
  315. - QA_CATEGORY: Cat5
  316. - QA_CATEGORY: Cat6
  317. - QA_CATEGORY: Analysis
  318. - QA_CATEGORY: Authorization
  319. - QA_CATEGORY: Auth
  320. - QA_CATEGORY: Branch1
  321. - QA_CATEGORY: Branch2
  322. - QA_CATEGORY: CE1
  323. - QA_CATEGORY: CE2
  324. - QA_CATEGORY: ComputeEngine
  325. - QA_CATEGORY: DE1
  326. - QA_CATEGORY: DE2
  327. - QA_CATEGORY: EE1
  328. - QA_CATEGORY: EE2
  329. - QA_CATEGORY: Issues1
  330. - QA_CATEGORY: Issues2
  331. - QA_CATEGORY: License1
  332. - QA_CATEGORY: License2
  333. - QA_CATEGORY: Plugins
  334. - QA_CATEGORY: Project
  335. - QA_CATEGORY: QP
  336. - QA_CATEGORY: Upgrade
  337. script:
  338. - ./private/cirrus/cirrus-qa.sh postgres
  339. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  340. task: #bitbucket
  341. <<: *DEFAULT_TEMPLATE
  342. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  343. <<: *JAR_CACHE_TEMPLATE
  344. <<: *GRADLE_CACHE_TEMPLATE
  345. <<: *BITBUCKET_SERVER_TASK_TEMPLATE
  346. eks_container:
  347. <<: *CONTAINER_TEMPLATE
  348. cpu: 3
  349. memory: 10Gb
  350. additional_containers:
  351. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  352. maven_cache:
  353. folder: ~/.m2
  354. env:
  355. QA_CATEGORY: BITBUCKET
  356. matrix:
  357. - name: qa_bb_5.15.0
  358. bitbucket_background_script: ./private/cirrus/cirrus-start-bitbucket.sh 5.15.0
  359. - name: qa_bb_latest
  360. bitbucket_background_script: ./private/cirrus/cirrus-start-bitbucket.sh LATEST
  361. 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
  362. script:
  363. - ./private/cirrus/cirrus-qa.sh postgres
  364. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  365. qa_bb_cloud_task:
  366. <<: *DEFAULT_TEMPLATE
  367. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  368. <<: *JAR_CACHE_TEMPLATE
  369. <<: *GRADLE_CACHE_TEMPLATE
  370. <<: *BITBUCKET_CLOUD_TASK_TEMPLATE
  371. eks_container:
  372. <<: *CONTAINER_TEMPLATE
  373. cpu: 2.4
  374. memory: 7Gb
  375. env:
  376. QA_CATEGORY: BITBUCKET_CLOUD
  377. BBC_CLIENT_ID: VAULT[development/team/sonarqube/kv/data/bitbucket-cloud data.client_id]
  378. BBC_CLIENT_SECRET: VAULT[development/team/sonarqube/kv/data/bitbucket-cloud data.client_secret]
  379. BBC_USERNAME: VAULT[development/kv/data/bitbucket/sonarqube-its data.username]
  380. BBC_READ_REPOS_APP_PASSWORD: VAULT[development/kv/data/bitbucket/sonarqube-its data.password]
  381. script:
  382. - ./private/cirrus/cirrus-qa.sh h2
  383. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  384. qa_ha_task:
  385. <<: *DEFAULT_TEMPLATE
  386. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  387. <<: *MASTER_OR_NIGHTLY_OR_MAINTENANCE_TASK_TEMPLATE
  388. <<: *JAR_CACHE_TEMPLATE
  389. <<: *GRADLE_CACHE_TEMPLATE
  390. eks_container:
  391. <<: *CONTAINER_TEMPLATE
  392. cpu: 2.4
  393. memory: 10Gb
  394. additional_containers:
  395. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  396. env:
  397. QA_CATEGORY: HA
  398. script:
  399. - ./private/cirrus/cirrus-qa.sh postgres
  400. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  401. qa_performance_task:
  402. <<: *DEFAULT_TEMPLATE
  403. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  404. <<: *MASTER_AND_NIGHTLY_TASK_TEMPLATE
  405. <<: *JAR_CACHE_TEMPLATE
  406. <<: *GRADLE_CACHE_TEMPLATE
  407. eks_container:
  408. <<: *CONTAINER_TEMPLATE
  409. cpu: 2.4
  410. memory: 10Gb
  411. additional_containers:
  412. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  413. env:
  414. QA_CATEGORY: AnalysisPerformance
  415. script:
  416. - ./private/cirrus/cirrus-qa.sh postgres
  417. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  418. # 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.
  419. qa_gitlab_task:
  420. <<: *DEFAULT_TEMPLATE
  421. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  422. <<: *JAR_CACHE_TEMPLATE
  423. <<: *GRADLE_CACHE_TEMPLATE
  424. <<: *GITLAB_TASK_TEMPLATE
  425. depends_on:
  426. - build
  427. env:
  428. QA_CATEGORY: GITLAB
  429. matrix:
  430. - name: qa_gitlab_latest
  431. env:
  432. - GITLAB_VERSION: latest
  433. - name: qa_gitlab_oldest
  434. env:
  435. - GITLAB_VERSION: 15.6.2-ce.0
  436. eks_container:
  437. <<: *CONTAINER_TEMPLATE
  438. cpu: 2.4
  439. memory: 7Gb
  440. use_in_memory_disk: true
  441. additional_containers:
  442. - name: gitlab
  443. ports:
  444. - 80
  445. - 443
  446. cpu: 2
  447. memory: 8Gb
  448. image: ${CIRRUS_AWS_ACCOUNT}.dkr.ecr.eu-central-1.amazonaws.com/gitlab:${GITLAB_VERSION}
  449. env:
  450. - GITLAB_POST_RECONFIGURE_SCRIPT: |-
  451. { cat >/tmp/setup.rb <<-'EOF'
  452. token = User.find_by_username('root').personal_access_tokens.create(scopes: [:api], name: 'token');
  453. token.set_token('token-here-456');
  454. token.expires_at = Date.today+10.day
  455. token.save!;
  456. token_read = User.find_by_username('root').personal_access_tokens.create(scopes: [:read_user], name: 'token_read');
  457. token_read.set_token('token-read-123');
  458. token_read.expires_at = Date.today+10.day
  459. token_read.save!;
  460. user = User.find_by_username('root');
  461. user.password = 'eng-YTU1ydh6kyt7tjd';
  462. user.password_confirmation = 'eng-YTU1ydh6kyt7tjd';
  463. user.save!;
  464. EOF
  465. } && gitlab-rails runner /tmp/setup.rb && \
  466. echo 'from_file "/etc/gitlab/external_gitlab.rb"' >> /etc/gitlab/gitlab.rb && \
  467. gitlab-ctl reconfigure
  468. script:
  469. - ./private/cirrus/cirrus-qa.sh h2
  470. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  471. qa_gitlab_cloud_task:
  472. <<: *DEFAULT_TEMPLATE
  473. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  474. <<: *JAR_CACHE_TEMPLATE
  475. <<: *GRADLE_CACHE_TEMPLATE
  476. <<: *GITLAB_TASK_TEMPLATE
  477. eks_container:
  478. <<: *CONTAINER_TEMPLATE
  479. cpu: 2.4
  480. memory: 7Gb
  481. use_in_memory_disk: true
  482. env:
  483. QA_CATEGORY: GITLAB_CLOUD
  484. GITLAB_API_TOKEN: VAULT[development/team/sonarqube/kv/data/gitlab-cloud data.api_token]
  485. GITLAB_READ_ONLY_TOKEN: VAULT[development/team/sonarqube/kv/data/gitlab-cloud data.api_token_ro]
  486. GITLAB_ADMIN_USERNAME: VAULT[development/team/sonarqube/kv/data/gitlab-cloud data.username]
  487. GITLAB_ADMIN_PASSWORD: VAULT[development/team/sonarqube/kv/data/gitlab-cloud data.password]
  488. script:
  489. - ./private/cirrus/cirrus-qa.sh h2
  490. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  491. # Azure QA is executed in a dedicated task in order to not slow down the pipeline.
  492. qa_azure_task:
  493. <<: *DEFAULT_TEMPLATE
  494. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  495. <<: *JAR_CACHE_TEMPLATE
  496. <<: *GRADLE_CACHE_TEMPLATE
  497. <<: *AZURE_TASK_TEMPLATE
  498. eks_container:
  499. <<: *CONTAINER_TEMPLATE
  500. cpu: 2.4
  501. memory: 7Gb
  502. env:
  503. QA_CATEGORY: AZURE
  504. AZURE_USERNAME_LOGIN: VAULT[development/team/sonarqube/kv/data/azure-instance data.username]
  505. AZURE_CODE_READ_AND_WRITE_TOKEN: VAULT[development/team/sonarqube/kv/data/azure-instance data.token_code_read_write]
  506. AZURE_FULL_ACCESS_TOKEN: VAULT[development/team/sonarqube/kv/data/azure-instance data.token_full_access]
  507. script:
  508. - ./private/cirrus/cirrus-qa.sh h2
  509. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  510. qa_github_task:
  511. <<: *DEFAULT_TEMPLATE
  512. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  513. <<: *GITHUB_TASK_TEMPLATE
  514. <<: *JAR_CACHE_TEMPLATE
  515. <<: *GRADLE_CACHE_TEMPLATE
  516. eks_container:
  517. <<: *CONTAINER_TEMPLATE
  518. cpu: 4
  519. memory: 7Gb
  520. env:
  521. QA_CATEGORY: GITHUB
  522. GITHUB_COM_CODE_SCANNING_ALERTS_TECHNICAL_USER_USERNAME: QA-task
  523. GITHUB_COM_CODE_SCANNING_ALERTS_TECHNICAL_USER_TOKEN: VAULT[development/github/token/SonarSource-sonar-enterprise-code-scanning token]
  524. script:
  525. - ./private/cirrus/cirrus-qa.sh h2
  526. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  527. qa_github_provisioning_task:
  528. <<: *DEFAULT_TEMPLATE
  529. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  530. <<: *GITHUB_TASK_TEMPLATE
  531. <<: *JAR_CACHE_TEMPLATE
  532. <<: *GRADLE_CACHE_TEMPLATE
  533. eks_container:
  534. <<: *CONTAINER_TEMPLATE
  535. cpu: 4
  536. memory: 7Gb
  537. env:
  538. QA_CATEGORY: GITHUB_PROVISIONING
  539. script:
  540. - ./private/cirrus/cirrus-qa.sh h2
  541. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  542. # SAML QA is executed in a dedicated task in order to not slow down the pipeline, as a Keycloak server docker image is required.
  543. qa_saml_task:
  544. <<: *DEFAULT_TEMPLATE
  545. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  546. <<: *SAML_TASK_TEMPLATE
  547. <<: *JAR_CACHE_TEMPLATE
  548. <<: *GRADLE_CACHE_TEMPLATE
  549. eks_container:
  550. <<: *CONTAINER_TEMPLATE
  551. cpu: 2.4
  552. memory: 10Gb
  553. additional_containers:
  554. - name: keycloak
  555. image: quay.io/keycloak/keycloak:21.1.1
  556. port: 8080
  557. cpu: 1
  558. memory: 1Gb
  559. command: "/opt/keycloak/bin/kc.sh start-dev --http-relative-path /auth"
  560. env:
  561. KEYCLOAK_ADMIN: admin
  562. KEYCLOAK_ADMIN_PASSWORD: admin
  563. env:
  564. QA_CATEGORY: SAML
  565. script:
  566. - ./private/cirrus/cirrus-qa.sh h2
  567. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  568. # 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.
  569. qa_ldap_task:
  570. <<: *DEFAULT_TEMPLATE
  571. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  572. <<: *LDAP_TASK_TEMPLATE
  573. <<: *JAR_CACHE_TEMPLATE
  574. <<: *GRADLE_CACHE_TEMPLATE
  575. eks_container:
  576. <<: *CONTAINER_TEMPLATE
  577. cpu: 2.4
  578. memory: 10Gb
  579. env:
  580. QA_CATEGORY: LDAP
  581. script:
  582. - ./private/cirrus/cirrus-qa.sh h2
  583. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  584. promote_task:
  585. <<: *DEFAULT_TEMPLATE
  586. <<: *EXCEPT_ON_NIGHTLY_TASK_TEMPLATE
  587. depends_on:
  588. - build
  589. - sq_analysis
  590. - qa
  591. - qa_saml
  592. - qa_ldap
  593. - publish
  594. eks_container:
  595. <<: *CONTAINER_TEMPLATE
  596. memory: 512M
  597. stateful: true
  598. script:
  599. - ./private/cirrus/cirrus-promote.sh
  600. package_docker_task:
  601. <<: *DEFAULT_TEMPLATE
  602. depends_on: promote
  603. only_if: $CIRRUS_BRANCH == $BRANCH_MAIN
  604. ec2_instance:
  605. <<: *VM_TEMPLATE
  606. clone_script: |
  607. 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
  608. git fetch origin $CIRRUS_CHANGE_IN_REPO --depth=1
  609. git reset --hard $CIRRUS_CHANGE_IN_REPO
  610. install_tooling_script:
  611. - ./private/cirrus/cirrus-tooling-for-package-docker.sh
  612. package_script:
  613. - ./private/cirrus/cirrus-package-docker.sh
  614. sql_mssql_task:
  615. <<: *DEFAULT_TEMPLATE
  616. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  617. <<: *DATABASE_RELATED_TASK_TEMPLATE
  618. <<: *GRADLE_CACHE_TEMPLATE
  619. eks_container:
  620. <<: *CONTAINER_TEMPLATE
  621. memory: 5Gb
  622. additional_containers:
  623. - name: mssql
  624. image: mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04
  625. port: 1433
  626. cpu: 2
  627. memory: 5Gb
  628. env:
  629. MSSQL_PID: Developer # this is the default edition
  630. ACCEPT_EULA: Y
  631. SA_PASSWORD: sonarqube!1
  632. script:
  633. - ./private/cirrus/cirrus-db-unit-test.sh mssql
  634. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  635. sql_postgres_task:
  636. <<: *DEFAULT_TEMPLATE
  637. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  638. <<: *DATABASE_RELATED_TASK_TEMPLATE
  639. <<: *GRADLE_CACHE_TEMPLATE
  640. eks_container:
  641. <<: *CONTAINER_TEMPLATE
  642. memory: 5Gb
  643. additional_containers:
  644. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  645. script:
  646. - ./private/cirrus/cirrus-db-unit-test.sh postgres
  647. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  648. # this is the oldest compatible version of PostgreSQL
  649. sql_postgres11_task:
  650. <<: *DEFAULT_TEMPLATE
  651. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  652. <<: *DATABASE_RELATED_TASK_TEMPLATE
  653. <<: *GRADLE_CACHE_TEMPLATE
  654. eks_container:
  655. <<: *CONTAINER_TEMPLATE
  656. memory: 5Gb
  657. additional_containers:
  658. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  659. image: public.ecr.aws/docker/library/postgres:11
  660. script:
  661. - ./private/cirrus/cirrus-db-unit-test.sh postgres
  662. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  663. sql_oracle21_task:
  664. <<: *DEFAULT_TEMPLATE
  665. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  666. <<: *DATABASE_RELATED_TASK_TEMPLATE
  667. <<: *GRADLE_CACHE_TEMPLATE
  668. eks_container:
  669. <<: *CONTAINER_TEMPLATE
  670. memory: 5Gb
  671. additional_containers:
  672. - <<: *ORACLE_ADDITIONAL_CONTAINER_TEMPLATE
  673. script:
  674. - ./private/cirrus/cirrus-db-unit-test.sh oracle21
  675. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  676. upgd_mssql_task:
  677. <<: *DEFAULT_TEMPLATE
  678. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  679. <<: *DATABASE_RELATED_TASK_TEMPLATE
  680. <<: *JAR_CACHE_TEMPLATE
  681. <<: *GRADLE_CACHE_TEMPLATE
  682. eks_container:
  683. <<: *CONTAINER_TEMPLATE
  684. cpu: 1.5
  685. memory: 6Gb
  686. additional_containers:
  687. - name: mssql
  688. image: mcr.microsoft.com/mssql/server:2022-latest
  689. port: 1433
  690. cpu: 2
  691. memory: 5Gb
  692. env:
  693. MSSQL_PID: Developer # this is the default edition
  694. ACCEPT_EULA: Y
  695. SA_PASSWORD: sonarqube!1
  696. env:
  697. QA_CATEGORY: Upgrade
  698. script:
  699. - ./private/cirrus/cirrus-qa.sh mssql
  700. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  701. upgd_oracle21_task:
  702. <<: *DEFAULT_TEMPLATE
  703. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  704. <<: *DATABASE_RELATED_TASK_TEMPLATE
  705. <<: *JAR_CACHE_TEMPLATE
  706. <<: *GRADLE_CACHE_TEMPLATE
  707. eks_container:
  708. <<: *CONTAINER_TEMPLATE
  709. cpu: 1.5
  710. memory: 6Gb
  711. additional_containers:
  712. - <<: *ORACLE_ADDITIONAL_CONTAINER_TEMPLATE
  713. env:
  714. QA_CATEGORY: Upgrade
  715. script:
  716. - ./private/cirrus/cirrus-qa.sh oracle21
  717. <<: *DEFAULT_ARTIFACTS_TEMPLATE
  718. mend_scan_task:
  719. <<: *DEFAULT_TEMPLATE
  720. <<: *BUILD_DEPENDANT_TASK_TEMPLATE
  721. <<: *MASTER_OR_NIGHTLY_OR_MAINTENANCE_TASK_TEMPLATE
  722. <<: *YARN_CACHE_TEMPLATE
  723. <<: *GRADLE_CACHE_TEMPLATE
  724. timeout_in: 30m
  725. eks_container:
  726. <<: *CONTAINER_TEMPLATE
  727. cpu: 2
  728. memory: 4Gb
  729. env:
  730. WS_APIKEY: VAULT[development/kv/data/mend data.apikey]
  731. WS_WSS_URL: VAULT[development/kv/data/mend data.url]
  732. WS_USERKEY: VAULT[development/kv/data/mend data.userKey]
  733. SLACK_WEBHOOK_SQ: VAULT[development/kv/data/slack data.webhook]
  734. mend_script:
  735. - ./private/cirrus/cirrus-mend-scan.sh
  736. allow_failures: "true"
  737. on_failure:
  738. slack_notification_script:
  739. - ./private/cirrus/cirrus-mend-notifications.sh
  740. always:
  741. ws_artifacts:
  742. path: "whitesource/**/*"