overleaf/services/web/cloudbuild.yaml

214 lines
4.5 KiB
YAML
Raw Normal View History

tags:
- web
- $BRANCH_NAME
- $SHORT_SHA
substitutions:
_COPYBARA: NO_RUN
images:
- 'gcr.io/$PROJECT_ID/web:$BRANCH_NAME-${SHORT_SHA}_$BUILD_ID'
steps:
- id: copy_external_pages
name: 'gcr.io/cloud-builders/docker'
entrypoint: sh
args:
- 'bin/copy_external_pages'
waitFor: ['-']
- id: pull_cache
name: 'gcr.io/cloud-builders/docker'
entrypoint: sh
args:
- '-c'
- 'docker pull gcr.io/$PROJECT_ID/web:$BRANCH_NAME-deps || docker pull gcr.io/$PROJECT_ID/web:master-deps || true'
waitFor: ['-']
- id: pull_cloud_builder
name: 'gcr.io/overleaf-ops/cloud-builder'
entrypoint: 'true'
waitFor: ['-']
- id: build_deps
name: 'gcr.io/$PROJECT_ID/cloud-builder'
args:
- 'build_deps'
waitFor:
- pull_cache
- id: push_deps
name: 'gcr.io/cloud-builders/docker'
entrypoint: sh
args:
- '-c'
- 'docker push gcr.io/$PROJECT_ID/web:$BRANCH_NAME-deps'
waitFor:
- build_deps
- id: build_dev
name: 'gcr.io/$PROJECT_ID/cloud-builder'
args:
- 'build_dev'
waitFor:
- copy_external_pages
- build_deps
- id: format
name: 'gcr.io/$PROJECT_ID/cloud-builder'
args:
- 'format_in_docker'
waitFor:
- build_dev
- id: lint
name: 'gcr.io/$PROJECT_ID/cloud-builder'
args:
- 'lint_in_docker'
waitFor:
- build_dev
- id: test_acceptance_app
name: 'gcr.io/$PROJECT_ID/cloud-builder'
args:
- 'test_acceptance_app'
waitFor:
- build_dev
- id: test_acceptance_modules
name: 'gcr.io/$PROJECT_ID/cloud-builder'
args:
- 'test_acceptance_modules'
- '-j4'
- '--output-sync'
waitFor:
- build_dev
- id: test_frontend
name: 'gcr.io/$PROJECT_ID/cloud-builder'
args:
- 'test_frontend'
waitFor:
- build_dev
- id: test_karma
name: 'gcr.io/$PROJECT_ID/cloud-builder'
args:
- 'test_karma_build_run'
waitFor:
- build_dev
- id: test_unit_app
name: 'gcr.io/$PROJECT_ID/cloud-builder'
args:
- 'test_unit_app_parallel_gnu_make_docker'
- 'J=10'
waitFor:
- build_dev
- id: test_unit_modules
name: 'gcr.io/$PROJECT_ID/cloud-builder'
args:
- 'test_unit_modules'
- '-j4'
- '--output-sync'
waitFor:
- build_dev
- id: build_webpack
name: 'gcr.io/$PROJECT_ID/cloud-builder'
args:
- 'build_webpack'
waitFor:
- build_dev
- id: build_production
name: 'gcr.io/$PROJECT_ID/cloud-builder'
args:
- 'build'
waitFor:
- build_webpack
- id: tar
name: 'gcr.io/$PROJECT_ID/cloud-builder'
args:
- 'tar'
waitFor:
- build_webpack
- id: tests_passed
name: 'gcr.io/$PROJECT_ID/cloud-builder'
entrypoint: 'true'
args: []
waitFor:
- format
- lint
- test_acceptance_app
- test_acceptance_modules
- test_unit_app
- test_unit_modules
- test_frontend
- id: cdn_upload
name: gcr.io/cloud-builders/gsutil
entrypoint: /bin/bash
args:
- '-c'
- 'bin/cdn_upload'
env:
- 'CDN_STAG=gs://ol-stag-web-assets-1'
- 'CDN_PROD=gs://mgcp-1117973-ol-prod-web-assets-1'
waitFor:
- tar
- tests_passed
- id: decrypt_sentry_secret
name: gcr.io/cloud-builders/gcloud
args:
- kms
- decrypt
- --ciphertext-file=.sentryclirc.enc
- --plaintext-file=.sentryclirc
- --location=us-east1
- --keyring=cloud-build-1
- --key=cloud-build-key
waitFor:
- build_dev
- id: sentry_upload
name: 'getsentry/sentry-cli'
entrypoint: /bin/sh
args:
- 'bin/sentry_upload'
waitFor:
- decrypt_sentry_secret
- tar
- tests_passed
- id: predecrypt
name: gcr.io/cloud-builders/gcloud
entrypoint: /bin/bash
args:
- '-c'
- 'touch /root/.ssh/id_ed25519 && chmod -R 0600 /root/.ssh'
volumes:
- name: 'ssh'
path: /root/.ssh
waitFor:
- build_dev
- id: fetch_copybara_key
name: gcr.io/google.com/cloudsdktool/cloud-sdk:alpine
entrypoint: /bin/bash
args:
- '-c'
- 'gcloud secrets versions access latest --secret=overleaf-copybara-web-private-key > /root/.ssh/id_ed25519 && chmod 600 /root/.ssh/id_ed25519'
volumes:
- name: 'ssh'
path: /root/.ssh
waitFor:
- predecrypt
- id: pull_copybara
name: 'sharelatex/copybara'
entrypoint: 'true'
args: []
waitFor:
- build_dev
- id: copybara
name: 'sharelatex/copybara'
entrypoint: bin/invoke-copybara
env:
- 'COPYBARA_CONFIG=./copybara/community/copy.bara.sky'
- 'COPYBARA=${_COPYBARA}'
- 'BRANCH_NAME=$BRANCH_NAME'
volumes:
- name: 'ssh'
path: /root/.ssh
waitFor:
- pull_copybara
- fetch_copybara_key
- tests_passed
timeout: 3600s
options:
machineType: 'N1_HIGHCPU_32'
env:
- 'BRANCH_NAME=$BRANCH_NAME'
- 'BUILD_NUMBER=${SHORT_SHA}_$BUILD_ID'
- 'COMMIT_SHA=$COMMIT_SHA'
- 'DOCKER_COMPOSE_FLAGS=-f docker-compose.ci.yml'