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.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. # content of service-account-credentials.json, used to access to Google Cloud Platform
  2. gcp_credentials: ENCRYPTED[ec86f04ec57d8a7f29ad6b84b41262c9d576abc533485754fdfdb24db103adf0d33ba4ba89a57d29d2549790be5abc72]
  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: ENCRYPTED[c0baa3376daa1e08d602435081d07653799cf34ab09ca92e575f3dc4176bc6cf2ebf87120e83f3aa6804f072013e8e2b]
  7. ARTIFACTORY_PRIVATE_PASSWORD: ENCRYPTED[f13d32d218c3da8008114d2c8857b2956047fbdab2163bbf186b8b89f789f0efa7504f499749a59ad5988c14e5360353]
  8. ARTIFACTORY_DEPLOY_USERNAME: public-qa-deployer
  9. ARTIFACTORY_DEPLOY_PASSWORD: ENCRYPTED[9362d735843b21b375b6e19d91e0de5216e053e229e39e2ce33a0c866306e6e3f9b08db8a0e126ca5e986fea97e975fd]
  10. ARTIFACTORY_DEPLOY_USERNAME_PRIVATE: private-qa-deployer
  11. ARTIFACTORY_DEPLOY_PASSWORD_PRIVATE: ENCRYPTED[61769719e9b775afe103dbee22141eeaa0116b3332eafb993be2a5919ff7bf017cdc519afed07dc6cac8ebbc0846f191]
  12. ARTIFACTORY_API_KEY: ENCRYPTED[d52910db749f2678f43084b18c849486d68fbc02c2f5489c7ee1085c395de9dc7575313a8b348bb5361a693dd782e07e]
  13. # download licenses for testing commercial editions
  14. GITHUB_TOKEN: ENCRYPTED[!f272985ea5b49b3cf9c414b98de6a8e9096be47bfcee52f33311ba3131a2af637c1b956f49585b7757dd84b7c030233a!]
  15. # use a permanent GitHub access token to perform a clone (by default CirrusCI uses a temporary one)
  16. CIRRUS_REPO_CLONE_TOKEN: ENCRYPTED[f20fee6519296187a473964e60afb08a1bbdc889a624fad0297b41a21d8697f8d2da4d2d245194ade630dcf46b4b581e]
  17. # notifications to burgr
  18. BURGR_URL: ENCRYPTED[06b8fcc9aaa4b495043aa08bc4450b89588902ad9a60cc8525f53d14810aff84558812e4b7eb01131dd64f33916ac941]
  19. BURGR_USERNAME: ENCRYPTED[cf7bfb936025fb763013bbfef0ab5723c0d9b53f135d79af36f9defa933f4b5fc72842bd83a97ce9b614503c1b77e6da]
  20. BURGR_PASSWORD: ENCRYPTED[bc554fc6a06c9f14cc9924cefad0a69e962a905b6d1609fc9357d458b45fc52ac74c960ad9c7382a0691433fa9dcd483]
  21. # analysis on next.sonarqube.com
  22. SONARQUBE_NEXT_TOKEN: ENCRYPTED[e3d98fa0ecceb015e9803d47f78c3040f5a710d678a631107635d69f650d4e53ecaf2e2334cc1fe0c47037ec915dcda0]
  23. # to trigger docs deployment
  24. BUDDY_WORKS_TOKEN: ENCRYPTED[9ba648f3167b6f0c0befbba2f816bfffd53260fef06fb0fe8bba0a19ae4808c8b1567c5dcee2a2ee5299a5969058f495]
  25. auto_cancellation: $CIRRUS_BRANCH != 'master' && $CIRRUS_BRANCH !=~ 'branch.*'
  26. task_only_nightly_depending_on_build_template: &TASK_ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  27. depends_on: build
  28. # Comment the following line and commit with message "DO NOT MERGE" in order to run
  29. # this task on your branch
  30. only_if: $CIRRUS_BRANCH == "branch-nightly-build"
  31. docker_build_container_template: &GKE_CONTAINER_TEMPLATE
  32. dockerfile: private/docker/Dockerfile-build
  33. builder_image_project: sonarqube-team
  34. builder_image_name: docker-builder-v20200915
  35. cluster_name: cirrus-ci-cluster
  36. zone: us-central1-a
  37. namespace: default
  38. cpu: 1
  39. memory: 1Gb
  40. oracle_additional_container_template: &ORACLE_ADDITIONAL_CONTAINER_TEMPLATE
  41. name: oracle
  42. 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
  43. port: 1521
  44. cpu: 2
  45. memory: 5Gb
  46. env:
  47. ORACLE_PWD: sonarqube
  48. postgres_additional_container_template: &POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  49. name: postgres
  50. image: postgres:12.1
  51. port: 5432
  52. cpu: 1
  53. memory: 1Gb
  54. env:
  55. POSTGRES_USER: postgres
  56. POSTGRES_PASSWORD: postgres
  57. reports_junit_on_failure_template: &REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  58. reports_artifacts:
  59. path: "**/build/reports/**/*"
  60. junit_artifacts:
  61. path: "**/test-results/**/*.xml"
  62. format: junit
  63. screenshots_on_failure_template: &REPORTS_JUNIT_SCREENSHOTS_ON_FAILURE_TEMPLATE
  64. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  65. screenshots_artifacts:
  66. path: "**/build/screenshots/**/*"
  67. build_task:
  68. only_if: $CIRRUS_BRANCH !=~ "dogfood/.*" && $CIRRUS_BRANCH != "public_master"
  69. timeout_in: 90m
  70. gke_container:
  71. <<: *GKE_CONTAINER_TEMPLATE
  72. cpu: 4
  73. memory: 7Gb
  74. env:
  75. # No need to clone the full history.
  76. # Depth of 1 is not enough because it would fail the build in case of consecutive pushes
  77. # (example of error: "Hard resetting to c968ecaf7a1942dacecd78480b3751ac74d53c33...Failed to force reset to c968ecaf7a1942dacecd78480b3751ac74d53c33: object not found!")
  78. CIRRUS_CLONE_DEPTH: 50
  79. script:
  80. - ./private/cirrus/cirrus-build.sh
  81. on_failure:
  82. reports_artifacts:
  83. path: "**/build/reports/**/*"
  84. deploy_docs_task:
  85. depends_on: build
  86. only_if: $CIRRUS_BRANCH == 'dogfood-on-next'
  87. gke_container:
  88. <<: *GKE_CONTAINER_TEMPLATE
  89. env:
  90. # No need to clone the full history.
  91. # Depth of 1 is not enough because it would fail the build in case of consecutive pushes
  92. # (example of error: "Hard resetting to c968ecaf7a1942dacecd78480b3751ac74d53c33...Failed to force reset to c968ecaf7a1942dacecd78480b3751ac74d53c33: object not found!")
  93. CIRRUS_CLONE_DEPTH: 50
  94. script:
  95. - ./private/cirrus/cirrus-trigger-deploy-docs.sh
  96. validate_task:
  97. depends_on: build
  98. only_if: $CIRRUS_BRANCH !=~ "dogfood/.*" && $CIRRUS_BRANCH != "public_master" && $CIRRUS_BRANCH != "branch-nightly-build"
  99. timeout_in: 90m
  100. gke_container:
  101. <<: *GKE_CONTAINER_TEMPLATE
  102. cpu: 2
  103. memory: 9Gb
  104. additional_containers:
  105. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  106. script:
  107. - ./private/cirrus/cirrus-validate.sh postgres106
  108. on_failure:
  109. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  110. qa_task:
  111. depends_on: build
  112. only_if: $CIRRUS_BRANCH !=~ "dogfood/.*" && $CIRRUS_BRANCH != "public_master" && $CIRRUS_BRANCH != "branch-nightly-build"
  113. gke_container:
  114. <<: *GKE_CONTAINER_TEMPLATE
  115. cpu: 3
  116. memory: 7Gb
  117. additional_containers:
  118. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  119. env:
  120. # No need to clone the full history.
  121. # Depth of 1 is not enough because it would fail the build in case of consecutive pushes
  122. # (example of error: "Hard resetting to c968ecaf7a1942dacecd78480b3751ac74d53c33...Failed to force reset to c968ecaf7a1942dacecd78480b3751ac74d53c33: object not found!")
  123. CIRRUS_CLONE_DEPTH: 50
  124. matrix:
  125. - QA_CATEGORY: Cat1
  126. - QA_CATEGORY: Cat2
  127. - QA_CATEGORY: Cat3
  128. - QA_CATEGORY: Cat4
  129. - QA_CATEGORY: Cat5
  130. - QA_CATEGORY: Cat6
  131. - QA_CATEGORY: Cat7
  132. - QA_CATEGORY: Authentication
  133. - QA_CATEGORY: Gov
  134. - QA_CATEGORY: License
  135. - QA_CATEGORY: Branch
  136. - QA_CATEGORY: Upgrade
  137. script:
  138. - ./private/cirrus/cirrus-qa.sh postgres106
  139. on_failure:
  140. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  141. qa_ha_task:
  142. <<: *TASK_ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  143. gke_container:
  144. <<: *GKE_CONTAINER_TEMPLATE
  145. cpu: 2.4
  146. memory: 10Gb
  147. additional_containers:
  148. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  149. env:
  150. # No need to clone the full history.
  151. # Depth of 1 is not enough because it would fail the build in case of consecutive pushes
  152. # (example of error: "Hard resetting to c968ecaf7a1942dacecd78480b3751ac74d53c33...Failed to force reset to c968ecaf7a1942dacecd78480b3751ac74d53c33: object not found!")
  153. CIRRUS_CLONE_DEPTH: 50
  154. QA_CATEGORY: HA
  155. gradle_cache:
  156. folder: ~/.gradle/caches
  157. script:
  158. - ./private/cirrus/cirrus-qa.sh postgres106
  159. cleanup_before_cache_script:
  160. - ./private/cirrus/cleanup-gradle-cache.sh
  161. on_failure:
  162. <<: *REPORTS_JUNIT_SCREENSHOTS_ON_FAILURE_TEMPLATE
  163. # 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.
  164. qa_gitlab_task:
  165. <<: *TASK_ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  166. gke_container:
  167. <<: *GKE_CONTAINER_TEMPLATE
  168. cpu: 2.4
  169. memory: 5Gb
  170. additional_containers:
  171. - name: gitlab
  172. image: gitlab/gitlab-ce:latest
  173. port: 8080:80
  174. cpu: 1
  175. memory: 5Gb
  176. env:
  177. # Creating a personnal access token from rails console for test purpuse (can't do through gitlab REST API)
  178. GITLAB_POST_RECONFIGURE_SCRIPT: "gitlab-rails runner \"token = User.find_by_username('root').personal_access_tokens.create(scopes: [:api], name: 'token'); token.set_token('token-here-456'); token.save!\""
  179. env:
  180. # No need to clone the full history.
  181. # Depth of 1 is not enough because it would fail the build in case of consecutive pushes
  182. # (example of error: "Hard resetting to c968ecaf7a1942dacecd78480b3751ac74d53c33...Failed to force reset to c968ecaf7a1942dacecd78480b3751ac74d53c33: object not found!")
  183. CIRRUS_CLONE_DEPTH: 50
  184. QA_CATEGORY: GITLAB
  185. gradle_cache:
  186. folder: ~/.gradle/caches
  187. script:
  188. - ./private/cirrus/cirrus-qa.sh h2
  189. cleanup_before_cache_script:
  190. - ./private/cirrus/cleanup-gradle-cache.sh
  191. on_failure:
  192. reports_artifacts:
  193. path: "**/build/reports/**/*"
  194. screenshots_artifacts:
  195. path: "**/build/screenshots/**/*"
  196. junit_artifacts:
  197. path: "**/test-results/**/*.xml"
  198. format: junit
  199. # SAML QA is executed in a dedicated task in order to not slow down the pipeline, as a Keycloak server docker image is required.
  200. qa_saml_task:
  201. <<: *TASK_ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  202. gke_container:
  203. <<: *GKE_CONTAINER_TEMPLATE
  204. cpu: 2.4
  205. memory: 10Gb
  206. additional_containers:
  207. - name: keycloak
  208. image: jboss/keycloak:7.0.0
  209. port: 8080
  210. cpu: 1
  211. memory: 1Gb
  212. env:
  213. KEYCLOAK_USER: admin
  214. KEYCLOAK_PASSWORD: admin
  215. env:
  216. # No need to clone the full history.
  217. # Depth of 1 is not enough because it would fail the build in case of consecutive pushes
  218. # (example of error: "Hard resetting to c968ecaf7a1942dacecd78480b3751ac74d53c33...Failed to force reset to c968ecaf7a1942dacecd78480b3751ac74d53c33: object not found!")
  219. CIRRUS_CLONE_DEPTH: 50
  220. QA_CATEGORY: SAML
  221. gradle_cache:
  222. folder: ~/.gradle/caches
  223. script:
  224. - ./private/cirrus/cirrus-qa.sh h2
  225. cleanup_before_cache_script:
  226. - ./private/cirrus/cleanup-gradle-cache.sh
  227. on_failure:
  228. <<: *REPORTS_JUNIT_SCREENSHOTS_ON_FAILURE_TEMPLATE
  229. # 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.
  230. qa_ldap_task:
  231. <<: *TASK_ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  232. gke_container:
  233. <<: *GKE_CONTAINER_TEMPLATE
  234. cpu: 2.4
  235. memory: 10Gb
  236. env:
  237. # No need to clone the full history.
  238. # Depth of 1 is not enough because it would fail the build in case of consecutive pushes
  239. # (example of error: "Hard resetting to c968ecaf7a1942dacecd78480b3751ac74d53c33...Failed to force reset to c968ecaf7a1942dacecd78480b3751ac74d53c33: object not found!")
  240. CIRRUS_CLONE_DEPTH: 50
  241. QA_CATEGORY: LDAP
  242. gradle_cache:
  243. folder: ~/.gradle/caches
  244. script:
  245. - ./private/cirrus/cirrus-qa.sh h2
  246. cleanup_before_cache_script:
  247. - ./private/cirrus/cleanup-gradle-cache.sh
  248. on_failure:
  249. <<: *REPORTS_JUNIT_SCREENSHOTS_ON_FAILURE_TEMPLATE
  250. # GH Action for updating plugins QA is only run if the action code is updated.
  251. qa_gh_action_task:
  252. skip: "!changesInclude('./private/github/actions/upgrade-plugins/**/*.*')"
  253. gke_container:
  254. <<: *GKE_CONTAINER_TEMPLATE
  255. env:
  256. # No need to clone the full history.
  257. # Depth of 1 is not enough because it would fail the build in case of consecutive pushes
  258. # (example of error: "Hard resetting to c968ecaf7a1942dacecd78480b3751ac74d53c33...Failed to force reset to c968ecaf7a1942dacecd78480b3751ac74d53c33: object not found!")
  259. CIRRUS_CLONE_DEPTH: 10
  260. gradle_cache:
  261. folder: ~/.gradle/caches
  262. script:
  263. - cd private/github/actions/upgrade-plugins
  264. - ../../../../gradlew test jacocoTestReport
  265. cleanup_before_cache_script:
  266. - ./private/cirrus/cleanup-gradle-cache.sh
  267. always:
  268. reports_artifacts:
  269. path: "private/github/actions/upgrade-plugins/build/reports/**/*"
  270. junit_artifacts:
  271. path: "private/github/actions/upgrade-plugins/build/test-results/**/*.xml"
  272. format: junit
  273. promote_task:
  274. depends_on:
  275. - build
  276. - validate
  277. - qa
  278. - qa_saml
  279. - qa_ldap
  280. only_if: $CIRRUS_BRANCH !=~ "dogfood/.*" && $CIRRUS_BRANCH != "public_master" && $CIRRUS_BRANCH != "branch-nightly-build"
  281. gke_container:
  282. <<: *GKE_CONTAINER_TEMPLATE
  283. stateful: true
  284. env:
  285. # No need to clone the full history.
  286. # Depth of 1 is not enough because it would fail the build in case of consecutive pushes
  287. # (example of error: "Hard resetting to c968ecaf7a1942dacecd78480b3751ac74d53c33...Failed to force reset to c968ecaf7a1942dacecd78480b3751ac74d53c33: object not found!")
  288. CIRRUS_CLONE_DEPTH: 50
  289. script:
  290. - ./private/cirrus/cirrus-promote.sh
  291. sql_mssql2017_task:
  292. <<: *TASK_ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  293. gke_container:
  294. <<: *GKE_CONTAINER_TEMPLATE
  295. memory: 5Gb
  296. additional_containers:
  297. - name: mssql
  298. image: mcr.microsoft.com/mssql/server:2017-GA-ubuntu
  299. port: 1433
  300. cpu: 2
  301. memory: 5Gb
  302. env:
  303. MSSQL_PID: Developer # this is the default edition
  304. ACCEPT_EULA: Y
  305. SA_PASSWORD: sonarqube!1
  306. script:
  307. - ./private/cirrus/cirrus-db-unit-test.sh mssql2017
  308. on_failure:
  309. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  310. # this is the oldest compatible version of PostgreSQL
  311. sql_postgres93_task:
  312. <<: *TASK_ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  313. gke_container:
  314. <<: *GKE_CONTAINER_TEMPLATE
  315. memory: 5Gb
  316. additional_containers:
  317. - <<: *POSTGRES_ADDITIONAL_CONTAINER_TEMPLATE
  318. image: postgres:9.3
  319. script:
  320. - ./private/cirrus/cirrus-db-unit-test.sh postgres93
  321. on_failure:
  322. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  323. sql_oracle12_task:
  324. <<: *TASK_ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  325. gke_container:
  326. <<: *GKE_CONTAINER_TEMPLATE
  327. memory: 5Gb
  328. additional_containers:
  329. - <<: *ORACLE_ADDITIONAL_CONTAINER_TEMPLATE
  330. script:
  331. - ./private/cirrus/cirrus-db-unit-test.sh oracle12
  332. on_failure:
  333. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  334. upgd_mssql2017_task:
  335. <<: *TASK_ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  336. gke_container:
  337. <<: *GKE_CONTAINER_TEMPLATE
  338. cpu: 1.5
  339. memory: 6Gb
  340. additional_containers:
  341. - name: mssql
  342. image: mcr.microsoft.com/mssql/server:2017-GA-ubuntu
  343. port: 1433
  344. cpu: 2
  345. memory: 5Gb
  346. env:
  347. MSSQL_PID: Developer # this is the default edition
  348. ACCEPT_EULA: Y
  349. SA_PASSWORD: sonarqube!1
  350. env:
  351. # No need to clone the full history.
  352. # Depth of 1 is not enough because it would fail the build in case of consecutive pushes
  353. # (example of error: "Hard resetting to c968ecaf7a1942dacecd78480b3751ac74d53c33...Failed to force reset to c968ecaf7a1942dacecd78480b3751ac74d53c33: object not found!")
  354. CIRRUS_CLONE_DEPTH: 50
  355. matrix:
  356. QA_CATEGORY: Upgrade
  357. script:
  358. - ./private/cirrus/cirrus-qa.sh mssql2017
  359. on_failure:
  360. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  361. upgd_oracle12_task:
  362. <<: *TASK_ONLY_NIGHTLY_DEPENDING_ON_BUILD_TEMPLATE
  363. gke_container:
  364. <<: *GKE_CONTAINER_TEMPLATE
  365. cpu: 1.5
  366. memory: 6Gb
  367. additional_containers:
  368. - <<: *ORACLE_ADDITIONAL_CONTAINER_TEMPLATE
  369. env:
  370. # No need to clone the full history.
  371. # Depth of 1 is not enough because it would fail the build in case of consecutive pushes
  372. # (example of error: "Hard resetting to c968ecaf7a1942dacecd78480b3751ac74d53c33...Failed to force reset to c968ecaf7a1942dacecd78480b3751ac74d53c33: object not found!")
  373. CIRRUS_CLONE_DEPTH: 50
  374. matrix:
  375. QA_CATEGORY: Upgrade
  376. script:
  377. - ./private/cirrus/cirrus-qa.sh oracle12
  378. on_failure:
  379. <<: *REPORTS_JUNIT_ON_FAILURE_TEMPLATE
  380. # Software Composition Analysis (SCA): check potential vulnerabilities in dependencies.
  381. # Note that license compliance of dependencies is not checked for now.
  382. owasp_check_task:
  383. only_if: $CIRRUS_CRON == "nightly"
  384. timeout_in: 30m
  385. gke_container:
  386. <<: *GKE_CONTAINER_TEMPLATE
  387. cpu: 1.7
  388. memory: 2Gb
  389. environment:
  390. # No need to clone the full history.
  391. # Depth of 1 is not enough because it would fail the build in case of consecutive pushes
  392. # (example of error: "Hard resetting to c968ecaf7a1942dacecd78480b3751ac74d53c33...Failed to force reset to c968ecaf7a1942dacecd78480b3751ac74d53c33: object not found!")
  393. CIRRUS_CLONE_DEPTH: 50
  394. SLACK_WEBHOOK_SQ: ENCRYPTED[dec8e4350cbea3b94d63098558bcb3ae9e79b71c2b6286fcfb9eb80c0953b6448b10f7271b07b5e75e52f362c25d7a8f]
  395. nvd_cache:
  396. # The NVD repository of vulnerabilities is big and should be cached so
  397. # that consecutive runs download only changes, but not the whole repository.
  398. folder: ~/.gradle/dependency-check-data
  399. reupload_on_changes: true
  400. script:
  401. - gradle dependencyCheckAggregate
  402. always:
  403. slack_notification_script:
  404. - ./private/cirrus/cirrus-owasp-notification.sh
  405. reports_artifacts:
  406. path: "build/reports/*"