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

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