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

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