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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675
  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.daemon=false -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: repox-private-reader-e2882e
  7. ARTIFACTORY_PRIVATE_PASSWORD: ENCRYPTED[!815fc7526a6579b7d974d1c41b5c247cfed8c88fb2c7b41ec5d3d54244701186da777c4003476b5b9fa208c8b8f208dc!]
  8. ARTIFACTORY_DEPLOY_USERNAME: repox-qa-deployer
  9. ARTIFACTORY_DEPLOY_PASSWORD: ENCRYPTED[!d484e19f33c9ce63b165f70e414a33b1ac6c215a126791aacbf8059626caf0fd8a78e999a20af5c1a4ba01c0b0247921!]
  10. ARTIFACTORY_API_KEY: ENCRYPTED[60f92cec4bf8446867dce41fe8dc77457f10065b82a24bfa3924d496aa1c14b89b531b86c3a34274abb12cf9a4cb36c4]
  11. ARTIFACTORY_PROMOTE_API_KEY: ENCRYPTED[!225fe1c81d27e529ed2e681e32d7c7cac787300c9f21c8ddcba2277583c9e9d5ae23c11ade3a6fb3c51c7c5dfb7b31bc!]
  12. # download licenses for testing commercial editions
  13. GITHUB_TOKEN: ENCRYPTED[!f458126aa9ed2ac526f220c5acb51dd9cc255726b34761a56fc78d4294c11089502a882888cef0ca7dd4085e72e611a5!]
  14. # notifications to burgr
  15. BURGR_URL: ENCRYPTED[24fba83587c1e9ed372b6cfdf12e4739ebe3b6e5b5082f1a2a742e840dd2e4b61fd5e281bf2632b22b3ad346c650c05c]
  16. BURGR_USERNAME: ENCRYPTED[cf7bfb936025fb763013bbfef0ab5723c0d9b53f135d79af36f9defa933f4b5fc72842bd83a97ce9b614503c1b77e6da]
  17. BURGR_PASSWORD: ENCRYPTED[bc554fc6a06c9f14cc9924cefad0a69e962a905b6d1609fc9357d458b45fc52ac74c960ad9c7382a0691433fa9dcd483]
  18. # analysis on next.sonarqube.com
  19. SONARQUBE_NEXT_TOKEN: ENCRYPTED[!0d599f9fb1613db33388821ca04af23f090729902b4421ad0a53cea8393d1e9039f2e47d65a246781b0e2c3718c172a1!]
  20. # to trigger docs deployment
  21. BUDDY_WORKS_TOKEN: ENCRYPTED[9ba648f3167b6f0c0befbba2f816bfffd53260fef06fb0fe8bba0a19ae4808c8b1567c5dcee2a2ee5299a5969058f495]
  22. ELASTIC_PWD: ENCRYPTED[78c127034b9f06bc1b5ad7a520de2da094f3eaf1dcb35f12b0f178fa90ce2fd157bd6f9feece9bf3a54b4e3805bc39fb]
  23. CIRRUS_LOG_TIMESTAMP: true
  24. # No need to clone the full history.
  25. # Depth of 1 is not enough because it would fail the build in case of consecutive pushes
  26. # (example of error: "Hard resetting to c968ecaf7a1942dacecd78480b3751ac74d53c33...Failed to force reset to c968ecaf7a1942dacecd78480b3751ac74d53c33: object not found!")
  27. CIRRUS_CLONE_DEPTH: 50
  28. auto_cancellation: $CIRRUS_BRANCH != 'master' && $CIRRUS_BRANCH !=~ 'branch.*' && $CIRRUS_BRANCH != 'dogfood-on-next'
  29. only_nightly_depending_on_build_template: &ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  30. depends_on: build
  31. # Comment the following line and commit with message "DO NOT MERGE" in order to run
  32. # this task on your branch
  33. only_if: $CIRRUS_BRANCH == "branch-nightly-build"
  34. only_upon_sql_changes_or_nightly_depending_on_build_template: &ONLY_UPON_SQL_CHANGE_OR_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  35. depends_on: build
  36. only_if: >-
  37. $CIRRUS_BRANCH == "branch-nightly-build" ||
  38. ($CIRRUS_CRON == "" && changesInclude('server/sonar-db-dao/**/*Mapper.xml', 'server/sonar-db-migration/**/DbVersion*.java',
  39. 'server/sonar-db-dao/**/*Dao.java'))
  40. only_default_branches_template: &ONLY_DEFAULT_BRANCHES_TEMPLATE
  41. only_if: >-
  42. $CIRRUS_BRANCH !=~ "dogfood/.*" &&
  43. $CIRRUS_BRANCH != "public_master" &&
  44. $CIRRUS_CRON == ""
  45. only_default_depending_on_build_template: &ONLY_DEFAULT_DEPENDING_ON_BUILD_TEMPLATE
  46. depends_on: build
  47. only_if: >-
  48. $CIRRUS_BRANCH !=~ "dogfood/.*" &&
  49. $CIRRUS_BRANCH != "public_master" &&
  50. $CIRRUS_CRON == ""
  51. docker_build_container_template: &GKE_CONTAINER_TEMPLATE
  52. dockerfile: private/docker/Dockerfile-build
  53. builder_image_project: sonarqube-team
  54. builder_image_name: docker-builder-v20200915
  55. cluster_name: cirrus-ci-cluster
  56. zone: us-central1-a
  57. namespace: default
  58. cpu: 1
  59. memory: 1Gb
  60. oracle_additional_container_template: &ORACLE_ADDITIONAL_CONTAINER_TEMPLATE
  61. name: oracle
  62. 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
  63. port: 1521
  64. cpu: 2
  65. memory: 5Gb
  66. env:
  67. ORACLE_PWD: sonarqube
  68. postgres_additional_container_template: &POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  69. name: postgres
  70. image: postgres:13.2
  71. port: 5432
  72. cpu: 1
  73. memory: 1Gb
  74. env:
  75. POSTGRES_USER: postgres
  76. POSTGRES_PASSWORD: postgres
  77. reports_junit_on_failure_template: &REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  78. jest_junit_cleanup_script: >
  79. find . -type f -wholename "**/build/test-results/test-jest/junit.xml" -exec
  80. xmlstarlet edit --inplace --delete '//testsuite[@errors=0 and @failures=0]' {} \;
  81. reports_artifacts:
  82. path: "**/build/reports/**/*"
  83. junit_artifacts:
  84. path: "**/build/test-results/**/*.xml"
  85. format: junit
  86. screenshots_on_failure_template: &REPORTS_JUNIT_SCREENSHOTS_ON_FAILURE_TEMPLATE
  87. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  88. screenshots_artifacts:
  89. path: "**/build/screenshots/**/*"
  90. yarn_cache_template: &YARN_CACHE_TEMPLATE
  91. yarn_cache:
  92. folder: "~/.yarn/berry/cache"
  93. fingerprint_script: |
  94. cat \
  95. server/sonar-web/yarn.lock \
  96. server/sonar-docs/yarn.lock \
  97. private/core-extension-governance/yarn.lock \
  98. private/core-extension-license/yarn.lock \
  99. private/core-extension-securityreport/yarn.lock
  100. gradle_cache_template: &GRADLE_CACHE_TEMPLATE
  101. gradle_cache:
  102. folder: "~/.gradle/caches"
  103. fingerprint_script: find -type f \( -name "*.gradle*" -or -name "gradle*.properties" \) -exec cat {} +
  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-governance/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-governance/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. custom_clone_script_template: &CUSTOM_CLONE_SCRIPT_TEMPLATE
  129. clone_script: |
  130. 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
  131. git fetch origin $CIRRUS_CHANGE_IN_REPO --depth=1
  132. git reset --hard $CIRRUS_CHANGE_IN_REPO
  133. profile_artifacts_template: &PROFILE_ARTIFACTS_TEMPLATE
  134. profile_artifacts:
  135. path: "**/build/reports/profile/**/*"
  136. build_task:
  137. <<: *ONLY_DEFAULT_BRANCHES_TEMPLATE
  138. <<: *GRADLE_CACHE_TEMPLATE
  139. <<: *YARN_CACHE_TEMPLATE
  140. timeout_in: 90m
  141. gke_container:
  142. <<: *GKE_CONTAINER_TEMPLATE
  143. cpu: 7.5
  144. memory: 8Gb
  145. env:
  146. ORG_GRADLE_PROJECT_signingKey: ENCRYPTED[!cc216dfe592f79db8006f2a591f8f98b40aa2b078e92025623594976fd32f6864c1e6b6ba74b50647f608e2418e6c336!]
  147. ORG_GRADLE_PROJECT_signingPassword: ENCRYPTED[!314a8fc344f45e462dd5e8dccd741d7562283a825e78ebca27d4ae9db8e65ce618e7f6aece386b2782a5abe5171467bd!]
  148. ORG_GRADLE_PROJECT_signingKeyId: 0x7DCD4258
  149. elasticsearch_distribution_cache:
  150. folder: sonar-application/build/elasticsearch-**.tar.gz
  151. script:
  152. - ./private/cirrus/cirrus-build.sh
  153. on_failure:
  154. reports_artifacts:
  155. path: "**/build/reports/**/*"
  156. always:
  157. <<: *PROFILE_ARTIFACTS_TEMPLATE
  158. yarn_lint-report-ci_task:
  159. <<: *ONLY_DEFAULT_BRANCHES_TEMPLATE
  160. <<: *GRADLE_CACHE_TEMPLATE
  161. <<: *YARN_CACHE_TEMPLATE
  162. <<: *ESLINT_REPORT_CACHE_TEMPLATE
  163. timeout_in: 90m
  164. gke_container:
  165. <<: *GKE_CONTAINER_TEMPLATE
  166. cpu: 5
  167. memory: 6Gb
  168. script:
  169. - ./private/cirrus/cirrus-yarn-lint-report.sh
  170. on_failure:
  171. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  172. always:
  173. <<: *PROFILE_ARTIFACTS_TEMPLATE
  174. yarn_validate-ci_task:
  175. <<: *ONLY_DEFAULT_BRANCHES_TEMPLATE
  176. <<: *GRADLE_CACHE_TEMPLATE
  177. <<: *YARN_CACHE_TEMPLATE
  178. <<: *JEST_REPORT_CACHE_TEMPLATE
  179. timeout_in: 90m
  180. gke_container:
  181. <<: *GKE_CONTAINER_TEMPLATE
  182. cpu: 7.5
  183. memory: 20Gb
  184. script:
  185. - ./private/cirrus/cirrus-yarn-validate-ci.sh
  186. on_failure:
  187. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  188. always:
  189. <<: *PROFILE_ARTIFACTS_TEMPLATE
  190. junit_task:
  191. <<: *ONLY_DEFAULT_BRANCHES_TEMPLATE
  192. <<: *GRADLE_CACHE_TEMPLATE
  193. <<: *JUNIT_REPORT_CACHE_TEMPLATE
  194. timeout_in: 90m
  195. gke_container:
  196. <<: *GKE_CONTAINER_TEMPLATE
  197. cpu: 7.5
  198. memory: 20Gb
  199. script:
  200. - ./private/cirrus/cirrus-junit.sh
  201. on_failure:
  202. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  203. always:
  204. <<: *PROFILE_ARTIFACTS_TEMPLATE
  205. validate_task:
  206. <<: *ONLY_DEFAULT_BRANCHES_TEMPLATE
  207. <<: *GRADLE_CACHE_TEMPLATE
  208. <<: *YARN_CACHE_TEMPLATE
  209. <<: *JEST_REPORT_CACHE_TEMPLATE
  210. <<: *ESLINT_REPORT_CACHE_TEMPLATE
  211. <<: *JUNIT_REPORT_CACHE_TEMPLATE
  212. depends_on:
  213. - yarn_validate-ci
  214. - yarn_lint-report-ci
  215. - junit
  216. timeout_in: 90m
  217. gke_container:
  218. <<: *GKE_CONTAINER_TEMPLATE
  219. cpu: 7.5
  220. memory: 28Gb
  221. env:
  222. # For the analysis, we need the full history.
  223. CIRRUS_CLONE_DEPTH: 0
  224. script:
  225. - ./private/cirrus/cirrus-validate.sh
  226. always:
  227. <<: *PROFILE_ARTIFACTS_TEMPLATE
  228. yarn_check-ci_task:
  229. <<: *ONLY_DEFAULT_BRANCHES_TEMPLATE
  230. <<: *GRADLE_CACHE_TEMPLATE
  231. <<: *YARN_CACHE_TEMPLATE
  232. timeout_in: 90m
  233. gke_container:
  234. <<: *GKE_CONTAINER_TEMPLATE
  235. cpu: 5
  236. memory: 6Gb
  237. script: |
  238. ./private/cirrus/cirrus-env.sh YARN
  239. gradle yarn_check-ci --profile
  240. always:
  241. <<: *PROFILE_ARTIFACTS_TEMPLATE
  242. qa_task:
  243. <<: *ONLY_DEFAULT_DEPENDING_ON_BUILD_TEMPLATE
  244. <<: *GRADLE_CACHE_TEMPLATE
  245. gke_container:
  246. <<: *GKE_CONTAINER_TEMPLATE
  247. cpu: 3
  248. memory: 7Gb
  249. additional_containers:
  250. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  251. env:
  252. matrix:
  253. - QA_CATEGORY: Cat1
  254. - QA_CATEGORY: Cat2
  255. - QA_CATEGORY: Cat3
  256. - QA_CATEGORY: Cat4
  257. - QA_CATEGORY: Cat5
  258. - QA_CATEGORY: Cat6
  259. - QA_CATEGORY: Cat7
  260. - QA_CATEGORY: Authentication
  261. - QA_CATEGORY: Gov
  262. - QA_CATEGORY: Dev
  263. - QA_CATEGORY: License
  264. - QA_CATEGORY: Branch
  265. - QA_CATEGORY: Upgrade
  266. script:
  267. - ./private/cirrus/cirrus-qa.sh postgres106
  268. on_failure:
  269. <<: *REPORTS_JUNIT_SCREENSHOTS_ON_FAILURE_TEMPLATE
  270. task: #bitbucket
  271. <<: *ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  272. <<: *GRADLE_CACHE_TEMPLATE
  273. gke_container:
  274. <<: *GKE_CONTAINER_TEMPLATE
  275. cpu: 3
  276. memory: 7Gb
  277. additional_containers:
  278. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  279. maven_cache:
  280. folder: ~/.m2
  281. env:
  282. QA_CATEGORY: BITBUCKET
  283. matrix:
  284. - name: qa_bitbucket_5.15.0
  285. bitbucket_background_script: ./private/cirrus/cirrus-start-bitbucket.sh 5.15.0
  286. - name: qa_bitbucket_latest
  287. bitbucket_background_script: ./private/cirrus/cirrus-start-bitbucket.sh LATEST
  288. 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
  289. script:
  290. - ./private/cirrus/cirrus-qa.sh postgres106
  291. on_failure:
  292. <<: *REPORTS_JUNIT_SCREENSHOTS_ON_FAILURE_TEMPLATE
  293. qa_bb_cloud_task:
  294. <<: *ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  295. <<: *GRADLE_CACHE_TEMPLATE
  296. gke_container:
  297. <<: *GKE_CONTAINER_TEMPLATE
  298. cpu: 2.4
  299. memory: 5Gb
  300. env:
  301. QA_CATEGORY: BITBUCKET_CLOUD
  302. BBC_CLIENT_ID: ENCRYPTED[f1c2c57d5f02885345b3db5776a3b28f5dbcc89723809f73ad05ada903ece9584f1dfe61b026c10eabd72c75d1258bac]
  303. BBC_CLIENT_SECRET: ENCRYPTED[39cc89ce4695c243fd688e687879bd473a60882fd30ba8613d6697e5d2b04e2017c68cae3a9a7ed9704f69c52bf229ee]
  304. BBC_READ_REPOS_APP_PASSWORD: ENCRYPTED[d33b02d02987e188b5cec2a14f6ddd04d1fcac39ed5d6ced08891fc562ebb6721c9fbf307c0eba81df78c83f75b3c27c]
  305. BBC_USERNAME: ENCRYPTED[f0af9be9d2fbaa55fbf69e4fce706ebc9131e0dc22cf8bce5d7ab2e0c2b57aff3ddbf6b3b77166e803a6000276256cea]
  306. script:
  307. - ./private/cirrus/cirrus-qa.sh h2
  308. on_failure:
  309. <<: *REPORTS_JUNIT_SCREENSHOTS_ON_FAILURE_TEMPLATE
  310. qa_ha_task:
  311. <<: *ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  312. <<: *GRADLE_CACHE_TEMPLATE
  313. gke_container:
  314. <<: *GKE_CONTAINER_TEMPLATE
  315. cpu: 2.4
  316. memory: 10Gb
  317. additional_containers:
  318. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  319. env:
  320. QA_CATEGORY: HA
  321. script:
  322. - ./private/cirrus/cirrus-qa.sh postgres106
  323. on_failure:
  324. <<: *REPORTS_JUNIT_SCREENSHOTS_ON_FAILURE_TEMPLATE
  325. docker_gitlab_container_build_task:
  326. only_if: $CIRRUS_BRANCH == "branch-nightly-build"
  327. gce_instance:
  328. image_project: sonarqube-team
  329. image_family: docker-builder
  330. zone: us-central1-a
  331. preemptible: true
  332. disk: 10
  333. cpu: 4
  334. memory: 8G
  335. env:
  336. matrix:
  337. - GITLAB_TAG: latest
  338. - GITLAB_TAG: 11.7.0-ce.0
  339. build_script:
  340. - docker pull "us.gcr.io/sonarqube-team/sq-gitlab:${GITLAB_TAG}" || true
  341. - 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/
  342. - docker push "us.gcr.io/sonarqube-team/sq-gitlab:${GITLAB_TAG}"
  343. # 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.
  344. qa_gitlab_task:
  345. <<: *ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  346. <<: *GRADLE_CACHE_TEMPLATE
  347. depends_on:
  348. - build
  349. - docker_gitlab_container_build
  350. gke_container:
  351. <<: *GKE_CONTAINER_TEMPLATE
  352. cpu: 2.4
  353. memory: 5Gb
  354. use_in_memory_disk: true
  355. additional_containers:
  356. - name: gitlab
  357. ports:
  358. - 80
  359. - 443
  360. cpu: 2
  361. memory: 5Gb
  362. matrix:
  363. - image: us.gcr.io/sonarqube-team/sq-gitlab:latest
  364. - image: us.gcr.io/sonarqube-team/sq-gitlab:11.7.0-ce.0
  365. env:
  366. QA_CATEGORY: GITLAB
  367. script:
  368. - ./private/cirrus/cirrus-qa.sh h2
  369. on_failure:
  370. <<: *REPORTS_JUNIT_SCREENSHOTS_ON_FAILURE_TEMPLATE
  371. qa_gitlab_cloud_task:
  372. <<: *ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  373. <<: *GRADLE_CACHE_TEMPLATE
  374. depends_on:
  375. - build
  376. - docker_gitlab_container_build
  377. gke_container:
  378. <<: *GKE_CONTAINER_TEMPLATE
  379. cpu: 2.4
  380. memory: 5Gb
  381. use_in_memory_disk: true
  382. env:
  383. QA_CATEGORY: GITLAB_CLOUD
  384. GITLAB_API_TOKEN: ENCRYPTED[a64a349d6185822adb17480cf507583fea6ba13b53edd4be6fb0eae76cf573bf7e68d560b7e57e1cc304cc719845c223]
  385. GITLAB_READ_ONLY_TOKEN: ENCRYPTED[29eb9c8643123f871329f0a88b540af401eb7f3f6f70447e0c80a955002f7998867faf2007bbb1b11880473f69384af9]
  386. GITLAB_ADMIN_USERNAME: ENCRYPTED[9bce572f769cb5432a691418879d7ab9bd74727bb9c16abe31af1b1beffabdce1720b9d8c888c37a3ce589473b44d5be]
  387. GITLAB_ADMIN_PASSWORD: ENCRYPTED[78e94b179d425e87d8f8b9ccaa1d117d8ffaec71eaee8ca7a3e36d1a885b85a61695f55031ab786af04d2181e3eadeb2]
  388. script:
  389. - ./private/cirrus/cirrus-qa.sh h2
  390. on_failure:
  391. <<: *REPORTS_JUNIT_SCREENSHOTS_ON_FAILURE_TEMPLATE
  392. # Azure QA is executed in a dedicated task in order to not slow down the pipeline.
  393. qa_azure_task:
  394. <<: *ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  395. <<: *GRADLE_CACHE_TEMPLATE
  396. gke_container:
  397. <<: *GKE_CONTAINER_TEMPLATE
  398. cpu: 2.4
  399. memory: 5Gb
  400. env:
  401. QA_CATEGORY: AZURE
  402. AZURE_USERNAME_LOGIN: ENCRYPTED[dcdf19769c1501408ebc22670c76d5e375cd739de2df5dfa3f215aa795296dfb257dbbcbe9bdfd33135feb04421fea1f]
  403. AZURE_CODE_READ_AND_WRITE_TOKEN: ENCRYPTED[eddc3448b40e72310f24f21241bdc1243860139d1a5aad593b016baedf03e4bba3f9e3d8d9f6329fe3b587966a8112d2]
  404. AZURE_FULL_ACCESS_TOKEN: ENCRYPTED[58779d6588e2e10d1b6f98fcc58a46957f8ef3a18e29d79abc6aa8d69ea55c23d8708e1f1af626464d309b1c7c087985]
  405. script:
  406. - ./private/cirrus/cirrus-qa.sh h2
  407. on_failure:
  408. <<: *REPORTS_JUNIT_SCREENSHOTS_ON_FAILURE_TEMPLATE
  409. # SAML QA is executed in a dedicated task in order to not slow down the pipeline, as a Keycloak server docker image is required.
  410. qa_saml_task:
  411. <<: *ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  412. <<: *GRADLE_CACHE_TEMPLATE
  413. gke_container:
  414. <<: *GKE_CONTAINER_TEMPLATE
  415. cpu: 2.4
  416. memory: 10Gb
  417. additional_containers:
  418. - name: keycloak
  419. image: jboss/keycloak:16.1.1
  420. port: 8080
  421. cpu: 1
  422. memory: 1Gb
  423. env:
  424. KEYCLOAK_USER: admin
  425. KEYCLOAK_PASSWORD: admin
  426. env:
  427. QA_CATEGORY: SAML
  428. script:
  429. - ./private/cirrus/cirrus-qa.sh h2
  430. on_failure:
  431. <<: *REPORTS_JUNIT_SCREENSHOTS_ON_FAILURE_TEMPLATE
  432. # 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.
  433. qa_ldap_task:
  434. <<: *ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  435. <<: *GRADLE_CACHE_TEMPLATE
  436. gke_container:
  437. <<: *GKE_CONTAINER_TEMPLATE
  438. cpu: 2.4
  439. memory: 10Gb
  440. env:
  441. QA_CATEGORY: LDAP
  442. script:
  443. - ./private/cirrus/cirrus-qa.sh h2
  444. on_failure:
  445. <<: *REPORTS_JUNIT_SCREENSHOTS_ON_FAILURE_TEMPLATE
  446. promote_task:
  447. <<: *ONLY_DEFAULT_DEPENDING_ON_BUILD_TEMPLATE
  448. depends_on:
  449. - build
  450. - validate
  451. - qa
  452. - qa_saml
  453. - qa_ldap
  454. gke_container:
  455. <<: *GKE_CONTAINER_TEMPLATE
  456. stateful: true
  457. script:
  458. - ./private/cirrus/cirrus-promote.sh
  459. deploy_docs_task:
  460. depends_on: promote
  461. skip: true
  462. only_if: $CIRRUS_BRANCH == 'dogfood-on-next'
  463. gke_container:
  464. <<: *GKE_CONTAINER_TEMPLATE
  465. script:
  466. - ./private/cirrus/cirrus-trigger-deploy-docs.sh
  467. package_docker_task:
  468. depends_on: promote
  469. only_if: $CIRRUS_BRANCH == 'dogfood-on-next'
  470. gce_instance:
  471. image_project: sonarqube-team
  472. image_family: docker-builder
  473. zone: us-central1-a
  474. disk: 10
  475. cpu: 4
  476. memory: 8G
  477. <<: *CUSTOM_CLONE_SCRIPT_TEMPLATE
  478. install_tooling_script:
  479. - ./private/cirrus/cirrus-tooling-for-package-docker.sh
  480. package_script:
  481. - ./private/cirrus/cirrus-package-docker.sh
  482. sql_mssql2017_task:
  483. <<: *ONLY_UPON_SQL_CHANGE_OR_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  484. <<: *GRADLE_CACHE_TEMPLATE
  485. gke_container:
  486. <<: *GKE_CONTAINER_TEMPLATE
  487. memory: 5Gb
  488. additional_containers:
  489. - name: mssql
  490. image: mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04
  491. port: 1433
  492. cpu: 2
  493. memory: 5Gb
  494. env:
  495. MSSQL_PID: Developer # this is the default edition
  496. ACCEPT_EULA: Y
  497. SA_PASSWORD: sonarqube!1
  498. script:
  499. - ./private/cirrus/cirrus-db-unit-test.sh mssql2017
  500. on_failure:
  501. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  502. sql_postgres106_task:
  503. <<: *ONLY_UPON_SQL_CHANGE_OR_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  504. <<: *GRADLE_CACHE_TEMPLATE
  505. gke_container:
  506. <<: *GKE_CONTAINER_TEMPLATE
  507. memory: 5Gb
  508. additional_containers:
  509. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  510. script:
  511. - ./private/cirrus/cirrus-db-unit-test.sh postgres106
  512. on_failure:
  513. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  514. # this is the oldest compatible version of PostgreSQL
  515. sql_postgres96_task:
  516. <<: *ONLY_UPON_SQL_CHANGE_OR_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  517. <<: *GRADLE_CACHE_TEMPLATE
  518. gke_container:
  519. <<: *GKE_CONTAINER_TEMPLATE
  520. memory: 5Gb
  521. additional_containers:
  522. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  523. image: postgres:9.6
  524. script:
  525. - ./private/cirrus/cirrus-db-unit-test.sh postgres96
  526. on_failure:
  527. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  528. sql_oracle12_task:
  529. <<: *ONLY_UPON_SQL_CHANGE_OR_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  530. <<: *GRADLE_CACHE_TEMPLATE
  531. gke_container:
  532. <<: *GKE_CONTAINER_TEMPLATE
  533. memory: 5Gb
  534. additional_containers:
  535. - <<: *ORACLE_ADDITIONAL_CONTAINER_TEMPLATE
  536. script:
  537. - ./private/cirrus/cirrus-db-unit-test.sh oracle12
  538. on_failure:
  539. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  540. upgd_mssql2019_task:
  541. <<: *ONLY_UPON_SQL_CHANGE_OR_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  542. <<: *GRADLE_CACHE_TEMPLATE
  543. gke_container:
  544. <<: *GKE_CONTAINER_TEMPLATE
  545. cpu: 1.5
  546. memory: 6Gb
  547. additional_containers:
  548. - name: mssql
  549. image: mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04
  550. port: 1433
  551. cpu: 2
  552. memory: 5Gb
  553. env:
  554. MSSQL_PID: Developer # this is the default edition
  555. ACCEPT_EULA: Y
  556. SA_PASSWORD: sonarqube!1
  557. env:
  558. QA_CATEGORY: Upgrade
  559. script:
  560. - ./private/cirrus/cirrus-qa.sh mssql2017
  561. on_failure:
  562. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  563. upgd_oracle12_task:
  564. <<: *ONLY_UPON_SQL_CHANGE_OR_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  565. <<: *GRADLE_CACHE_TEMPLATE
  566. gke_container:
  567. <<: *GKE_CONTAINER_TEMPLATE
  568. cpu: 1.5
  569. memory: 6Gb
  570. additional_containers:
  571. - <<: *ORACLE_ADDITIONAL_CONTAINER_TEMPLATE
  572. env:
  573. matrix:
  574. QA_CATEGORY: Upgrade
  575. script:
  576. - ./private/cirrus/cirrus-qa.sh oracle12
  577. on_failure:
  578. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  579. # Software Composition Analysis (SCA): check potential vulnerabilities in dependencies.
  580. # Note that license compliance of dependencies is not checked for now.
  581. owasp_check_task:
  582. only_if: >-
  583. $CIRRUS_CRON == "nightly" ||
  584. $CIRRUS_CRON == "weekly-latest" ||
  585. $CIRRUS_CRON == "weekly-lts" ||
  586. changesInclude('private/owasp/*.xml')
  587. <<: *YARN_CACHE_TEMPLATE
  588. <<: *GRADLE_CACHE_TEMPLATE
  589. timeout_in: 30m
  590. gke_container:
  591. <<: *GKE_CONTAINER_TEMPLATE
  592. cpu: 1.7
  593. memory: 4Gb
  594. SLACK_WEBHOOK_SQ: ENCRYPTED[dec8e4350cbea3b94d63098558bcb3ae9e79b71c2b6286fcfb9eb80c0953b6448b10f7271b07b5e75e52f362c25d7a8f]
  595. script:
  596. - gradle dependencyCheckAggregate
  597. on_failure:
  598. slack_notification_script:
  599. - ./private/cirrus/cirrus-owasp-notification.sh
  600. always:
  601. reports_artifacts:
  602. path: "build/reports/*"
  603. ws_scan_task:
  604. only_if: >-
  605. $CIRRUS_CRON == "nightly" ||
  606. $CIRRUS_CRON == "weekly-latest" ||
  607. $CIRRUS_CRON == "weekly-lts" ||
  608. changesInclude('private/cirrus/cirrus-whitesource-scan.sh')
  609. <<: *YARN_CACHE_TEMPLATE
  610. <<: *GRADLE_CACHE_TEMPLATE
  611. depends_on: build
  612. timeout_in: 30m
  613. gke_container:
  614. <<: *GKE_CONTAINER_TEMPLATE
  615. cpu: 2
  616. memory: 4Gb
  617. SLACK_WEBHOOK_SQ: ENCRYPTED[dec8e4350cbea3b94d63098558bcb3ae9e79b71c2b6286fcfb9eb80c0953b6448b10f7271b07b5e75e52f362c25d7a8f]
  618. env:
  619. WS_APIKEY: ENCRYPTED[308f809a4051b3225bed52131b32fb52895bc5a12c23e901f35b1d1e9d80bcaf75a1023c0dd171994bdbe790b4055e66]
  620. WS_WSS_URL: "https://saas-eu.whitesourcesoftware.com/agent"
  621. WS_USERKEY: ENCRYPTED[747f9c9006cf9859fd5f02bad85a044c5c0f32d12190deb624d480ad6d86b2f114da136e068645281e9e83e2f0727ab2]
  622. whitesource_script:
  623. - ./private/cirrus/cirrus-whitesource-scan.sh
  624. allow_failures: "true"
  625. on_failure:
  626. slack_notification_script:
  627. - ./private/cirrus/cirrus-whitesource-notifications.sh
  628. always:
  629. ws_artifacts:
  630. path: "whitesource/**/*"