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

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