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

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