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

.cirrus.yml 23KB

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