cloudbuild.yaml 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. steps:
  2. - name: 'gcr.io/kaniko-project/executor:v0.22.0'
  3. args: [
  4. '--cache=true',
  5. '--build-arg', 'SOURCE_COMMIT=$COMMIT_SHA',
  6. '--destination=us.gcr.io/$PROJECT_ID/sentry-builder:$COMMIT_SHA',
  7. '-f', './docker/builder.dockerfile'
  8. ]
  9. timeout: 180s
  10. - name: 'us.gcr.io/$PROJECT_ID/sentry-builder:$COMMIT_SHA'
  11. env: [
  12. 'SOURCE_COMMIT=$COMMIT_SHA'
  13. ]
  14. timeout: 360s
  15. - name: 'gcr.io/kaniko-project/executor:v0.22.0'
  16. args: [
  17. '--cache=true',
  18. '--build-arg', 'SOURCE_COMMIT=$COMMIT_SHA',
  19. '--destination=us.gcr.io/$PROJECT_ID/sentry:$COMMIT_SHA',
  20. '-f', './docker/Dockerfile'
  21. ]
  22. timeout: 300s
  23. # Smoke tests
  24. - name: 'gcr.io/$PROJECT_ID/docker-compose'
  25. entrypoint: 'bash'
  26. env:
  27. - 'SENTRY_IMAGE=us.gcr.io/$PROJECT_ID/sentry:$COMMIT_SHA'
  28. - 'SENTRY_TEST_HOST=http://nginx'
  29. - 'CI=1'
  30. args:
  31. - '-e'
  32. - '-c'
  33. - |
  34. mkdir onpremise && cd onpremise
  35. curl -L "https://github.com/getsentry/onpremise/archive/master.tar.gz" | tar xzf - --strip-components=1
  36. # The following trick is from https://stackoverflow.com/a/52400857/90297 with great gratuity
  37. echo '{"version": "3.4", "networks":{"default":{"external":{"name":"cloudbuild"}}}}' > docker-compose.override.yml
  38. ./install.sh
  39. ./test.sh || docker-compose logs nginx web relay
  40. timeout: 300s
  41. - name: 'gcr.io/cloud-builders/docker'
  42. secretEnv: ['DOCKER_PASSWORD']
  43. entrypoint: 'bash'
  44. args:
  45. - '-e'
  46. - '-c'
  47. - |
  48. # Only push to Docker Hub from master
  49. [ "$BRANCH_NAME" != "master" ] && exit 0
  50. # Need to pull the image first due to Kaniko
  51. docker pull us.gcr.io/$PROJECT_ID/sentry:$COMMIT_SHA
  52. echo "$$DOCKER_PASSWORD" | docker login --username=sentrybuilder --password-stdin
  53. docker tag us.gcr.io/$PROJECT_ID/sentry:$COMMIT_SHA getsentry/sentry:$SHORT_SHA
  54. docker push getsentry/sentry:$SHORT_SHA
  55. docker tag us.gcr.io/$PROJECT_ID/sentry:$COMMIT_SHA getsentry/sentry:$COMMIT_SHA
  56. docker push getsentry/sentry:$COMMIT_SHA
  57. docker tag us.gcr.io/$PROJECT_ID/sentry:$COMMIT_SHA getsentry/sentry:latest
  58. docker push getsentry/sentry:latest
  59. - name: 'node:12'
  60. secretEnv: ['ZEUS_HOOK_BASE']
  61. entrypoint: 'bash'
  62. args:
  63. - '-e'
  64. - '-c'
  65. - |
  66. # Only push to Zeus from releases/*
  67. [[ ! "$BRANCH_NAME" =~ ^releases/ ]] && exit 0
  68. npx -p "@zeus-ci/cli" zeus job update --build $BUILD_ID --job 1 --ref $COMMIT_SHA --build-label GCB --job-label "OSS Packages" --status passed
  69. npx -p "@zeus-ci/cli" zeus upload --build $BUILD_ID --job 1 --type "application/x-pywheel+zip" dist/*.whl
  70. timeout: 2400s
  71. options:
  72. # We need more memory for Webpack builds & e2e onpremise tests
  73. machineType: 'N1_HIGHCPU_8'
  74. secrets:
  75. - kmsKeyName: projects/sentryio/locations/global/keyRings/service-credentials/cryptoKeys/cloudbuild
  76. secretEnv:
  77. # This is a personal access token for the sentrybuilder account, encrypted using the
  78. # short guide at http://bit.ly/2Pg6uw9
  79. DOCKER_PASSWORD: |
  80. CiQAE8gN7y3OMxn+a1kofmK4Bi8jQZtdRFj2lYYwaZHVeIIBUzMSTQA9tvn8XCv2vqj6u8CHoeSP
  81. TVW9pLvSCorKoeNtOp0eb+6V1yNJW/+JC07DNO1KLbTbodbuza6jKJHU5xeAJ4kGQI78UY5Vu1Gp
  82. QcMK
  83. ZEUS_HOOK_BASE: |
  84. CiQAE8gN75WxSPytiv8kAp3cOp3RJHMqnfwH2bPDLJnwRxjQUJYSpAEAPbb5/GE1N8kUiC2YLh2n
  85. IinZi+rM5umfESVC5lhzDkDqBiGLEvAKtAHOvnbVbdm/Ui5KytpUUGb+QRajw9MFGZlavUz81wyu
  86. QDOpuajIhRNhhTZsJIhvFDkpQQykSgM2A7uKSQtQTLI9+njyB4F+SQEgaB6SvC7gMCqhSqYH+qJB
  87. r1OJiKninNgwred/uJU0ZcVnNERNZ/hOyC1p/lXS7LHooA==