cloudbuild.yaml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. tags:
  2. - web
  3. - $BRANCH_NAME
  4. - $SHORT_SHA
  5. substitutions:
  6. _COPYBARA: NO_RUN
  7. images:
  8. - 'gcr.io/$PROJECT_ID/web:$BRANCH_NAME-${SHORT_SHA}_$BUILD_ID'
  9. steps:
  10. - id: copy_external_pages
  11. name: 'gcr.io/cloud-builders/docker'
  12. entrypoint: sh
  13. args:
  14. - 'bin/copy_external_pages'
  15. waitFor: ['-']
  16. - id: pull_cache
  17. name: 'gcr.io/cloud-builders/docker'
  18. entrypoint: sh
  19. args:
  20. - '-c'
  21. - 'docker pull gcr.io/$PROJECT_ID/web:$BRANCH_NAME-deps || docker pull gcr.io/$PROJECT_ID/web:master-deps || true'
  22. waitFor: ['-']
  23. - id: pull_cloud_builder
  24. name: 'gcr.io/overleaf-ops/cloud-builder'
  25. entrypoint: 'true'
  26. waitFor: ['-']
  27. - id: build_deps
  28. name: 'gcr.io/$PROJECT_ID/cloud-builder'
  29. args:
  30. - 'build_deps'
  31. waitFor:
  32. - pull_cache
  33. - id: push_deps
  34. name: 'gcr.io/cloud-builders/docker'
  35. entrypoint: sh
  36. args:
  37. - '-c'
  38. - 'docker push gcr.io/$PROJECT_ID/web:$BRANCH_NAME-deps'
  39. waitFor:
  40. - build_deps
  41. - id: build_dev
  42. name: 'gcr.io/$PROJECT_ID/cloud-builder'
  43. args:
  44. - 'build_dev'
  45. waitFor:
  46. - copy_external_pages
  47. - build_deps
  48. - id: format
  49. name: 'gcr.io/$PROJECT_ID/cloud-builder'
  50. args:
  51. - 'format_in_docker'
  52. waitFor:
  53. - build_dev
  54. - id: lint
  55. name: 'gcr.io/$PROJECT_ID/cloud-builder'
  56. args:
  57. - 'lint_in_docker'
  58. waitFor:
  59. - build_dev
  60. - id: test_acceptance_app
  61. name: 'gcr.io/$PROJECT_ID/cloud-builder'
  62. args:
  63. - 'test_acceptance_app'
  64. waitFor:
  65. - build_dev
  66. - id: test_acceptance_modules
  67. name: 'gcr.io/$PROJECT_ID/cloud-builder'
  68. args:
  69. - 'test_acceptance_modules'
  70. - '-j4'
  71. - '--output-sync'
  72. waitFor:
  73. - build_dev
  74. - id: test_frontend
  75. name: 'gcr.io/$PROJECT_ID/cloud-builder'
  76. args:
  77. - 'test_frontend'
  78. waitFor:
  79. - build_dev
  80. - id: test_karma
  81. name: 'gcr.io/$PROJECT_ID/cloud-builder'
  82. args:
  83. - 'test_karma_build_run'
  84. waitFor:
  85. - build_dev
  86. - id: test_unit_app
  87. name: 'gcr.io/$PROJECT_ID/cloud-builder'
  88. args:
  89. - 'test_unit_app_parallel_gnu_make_docker'
  90. - 'J=10'
  91. waitFor:
  92. - build_dev
  93. - id: test_unit_modules
  94. name: 'gcr.io/$PROJECT_ID/cloud-builder'
  95. args:
  96. - 'test_unit_modules'
  97. - '-j4'
  98. - '--output-sync'
  99. waitFor:
  100. - build_dev
  101. - id: build_webpack
  102. name: 'gcr.io/$PROJECT_ID/cloud-builder'
  103. args:
  104. - 'build_webpack'
  105. waitFor:
  106. - build_dev
  107. - id: build_production
  108. name: 'gcr.io/$PROJECT_ID/cloud-builder'
  109. args:
  110. - 'build'
  111. waitFor:
  112. - build_webpack
  113. - id: tar
  114. name: 'gcr.io/$PROJECT_ID/cloud-builder'
  115. args:
  116. - 'tar'
  117. waitFor:
  118. - build_webpack
  119. - id: tests_passed
  120. name: 'gcr.io/$PROJECT_ID/cloud-builder'
  121. entrypoint: 'true'
  122. args: []
  123. waitFor:
  124. - format
  125. - lint
  126. - test_acceptance_app
  127. - test_acceptance_modules
  128. - test_unit_app
  129. - test_unit_modules
  130. - test_frontend
  131. - id: cdn_upload
  132. name: gcr.io/cloud-builders/gsutil
  133. entrypoint: /bin/bash
  134. args:
  135. - '-c'
  136. - 'bin/cdn_upload'
  137. env:
  138. - 'CDN_STAG=gs://ol-stag-web-assets-1'
  139. - 'CDN_PROD=gs://mgcp-1117973-ol-prod-web-assets-1'
  140. waitFor:
  141. - tar
  142. - tests_passed
  143. - id: decrypt_sentry_secret
  144. name: gcr.io/cloud-builders/gcloud
  145. args:
  146. - kms
  147. - decrypt
  148. - --ciphertext-file=.sentryclirc.enc
  149. - --plaintext-file=.sentryclirc
  150. - --location=us-east1
  151. - --keyring=cloud-build-1
  152. - --key=cloud-build-key
  153. waitFor:
  154. - build_dev
  155. - id: sentry_upload
  156. name: 'getsentry/sentry-cli'
  157. entrypoint: /bin/sh
  158. args:
  159. - 'bin/sentry_upload'
  160. waitFor:
  161. - decrypt_sentry_secret
  162. - tar
  163. - tests_passed
  164. - id: predecrypt
  165. name: gcr.io/cloud-builders/gcloud
  166. entrypoint: /bin/bash
  167. args:
  168. - '-c'
  169. - 'touch /root/.ssh/id_ed25519 && chmod -R 0600 /root/.ssh'
  170. volumes:
  171. - name: 'ssh'
  172. path: /root/.ssh
  173. waitFor:
  174. - build_dev
  175. - id: fetch_copybara_key
  176. name: gcr.io/google.com/cloudsdktool/cloud-sdk:alpine
  177. entrypoint: /bin/bash
  178. args:
  179. - '-c'
  180. - 'gcloud secrets versions access latest --secret=overleaf-copybara-web-private-key > /root/.ssh/id_ed25519 && chmod 600 /root/.ssh/id_ed25519'
  181. volumes:
  182. - name: 'ssh'
  183. path: /root/.ssh
  184. waitFor:
  185. - predecrypt
  186. - id: pull_copybara
  187. name: 'sharelatex/copybara'
  188. entrypoint: 'true'
  189. args: []
  190. waitFor:
  191. - build_dev
  192. - id: copybara
  193. name: 'sharelatex/copybara'
  194. entrypoint: bin/invoke-copybara
  195. env:
  196. - 'COPYBARA_CONFIG=./copybara/community/copy.bara.sky'
  197. - 'COPYBARA=${_COPYBARA}'
  198. - 'BRANCH_NAME=$BRANCH_NAME'
  199. volumes:
  200. - name: 'ssh'
  201. path: /root/.ssh
  202. waitFor:
  203. - pull_copybara
  204. - fetch_copybara_key
  205. - tests_passed
  206. timeout: 3600s
  207. options:
  208. machineType: 'N1_HIGHCPU_32'
  209. env:
  210. - 'BRANCH_NAME=$BRANCH_NAME'
  211. - 'BUILD_NUMBER=${SHORT_SHA}_$BUILD_ID'
  212. - 'COMMIT_SHA=$COMMIT_SHA'
  213. - 'DOCKER_COMPOSE_FLAGS=-f docker-compose.ci.yml'