scratch-www/.circleci/config.yml

173 lines
4.7 KiB
YAML

version: 2.1
aliases:
- &defaults
docker:
- image: circleci/node:12-browsers
auth:
username: $DOCKERHUB_USERNAME
password: $DOCKERHUB_PASSWORD
working_directory: ~/repo
# - &environment
# CXX: g++-4.8
# FASTLY_ACTIVATE_CHANGES: true
# NODE_ENV: production
# S3_LOCAL_DIR: build
# SENTRY_ORG: scratch-foundation
# SKIP_CLEANUP: true
# WWW_VERSION: ${CIRCLE_SHA1:0:5}
# - &env_production
# API_HOST: https://api.scratch.mit.edu
# ASSET_HOST: https://assets.scratch.mit.edu
# BACKPACK_HOST: https://backpack.scratch.mit.edu
# CLOUDDATA_HOST: clouddata.scratch.mit.edu
# GA_TRACKER: UA-30688952-1
# PROJECT_HOST: https://projects.scratch.mit.edu
# RECAPTCHA_SITE_KEY: 6LeRbUwUAAAAAFYhKgk3G9OKWqE_OJ7Z-7VTUCbl
# ROOT_URL: https://scratch.mit.edu
# S3_BUCKET_NAME: scratch-www-production
# SCRATCH_ENV: production
# SENTRY_DSN: https://ebc2f8a6bc7b44ca8fd902fd4f16b3d7@sentry.io/1357122
# SENTRY_PROJECT: scratch-30-production
# STATIC_HOST: https://cdn2.scratch.mit.edu
# TEST_PROJECT_ID: "414835599"
# - &env_staging
# API_HOST: https://api.scratch.ly
# ASSET_HOST: https://assets.scratch.ly
# BACKPACK_HOST: https://backpack.scratch.ly
# CLOUDDATA_HOST: varserver2.scratch.ly
# GA_TRACKER: UA-30688952-7
# PROJECT_HOST: https://projects.scratch.ly
# RECAPTCHA_SITE_KEY: 6LfukK4UAAAAAFR44yoZMhv8fj6xh-PMiIxwryG3
# ROOT_URL: https://scratch.ly
# S3_BUCKET_NAME: scratch-www-staging
# SCRATCH_ENV: staging
# SENTRY_DSN: https://c01014988b0a4f44bbefdf235623c456@sentry.io/1357982
# SENTRY_PROJECT: scratch-30-staging
# STATIC_HOST: https://cdn.scratch.ly
# TEST_PROJECT_ID: "1300006196"
- &save_git_cache
save_cache:
paths:
- .git
key: v1-git-{{ .Revision }}
- &restore_git_cache
restore_cache:
keys:
- v1-git-{{ .Revision }}
- v1-git-
- &save_npm_cache
save_cache:
paths:
- node_modules
key: v1-npm-{{ checksum "package-lock.json" }}
- &restore_npm_cache
restore_cache:
keys:
- v1-npm-{{ checksum "package-lock.json" }}
- v1-npm-
- &save_build_cache
save_cache:
paths:
- ./build
- ./intl
key: v1-build-{{ .Revision }}
- &restore_build_cache
restore_cache:
keys:
- v1-build-{{ .Revision }}
- v1-build-
- &build
<<: *defaults
steps:
- *restore_git_cache
- checkout
- *restore_npm_cache
- run:
name: "Run npm test to build"
command: |
npm --production=false ci
WWW_VERSION=${CIRCLE_SHA1:0:5} npm run test
- *save_npm_cache
- *save_git_cache
- *save_build_cache
- &deploy
<<: *defaults
steps:
- *restore_git_cache
- checkout
- *restore_npm_cache
- *restore_build_cache
- run:
name: "deploy to staging"
command: |
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
pip install -r requirements.txt
npm run deploy
- &integration
<<: *defaults
steps:
- *restore_git_cache
- checkout
- *restore_npm_cache
- run:
name: "integration tests"
command: |
npm run test:integration:remote
jobs:
build-staging:
<<: *build
build-production:
# <<: *build
deploy-staging:
<<: *deploy
deploy-production:
# <<: *deploy
integration-staging:
<<: *integration
integration-production:
# <<: *integration
workflows:
build-test-deploy:
jobs:
- build-staging:
context:
- scratch-www-all
- scratch-www-staging
filters:
branches:
only:
- circleci-project-setup # remove this before releasing
- develop
- /^hotfix\/.*/
- /^release\/.*/
- deploy-staging:
context:
- scratch-www-all
- scratch-www-staging
requires:
- build-staging
filters:
branches:
only:
- circleci-project-setup # remove this before releasing
- develop
- /^hotfix\/.*/ # make sure this syntax works. may need a regex
- /^release\/.*/
- integration-staging:
context:
- scratch-www-all
- scratch-www-staging
requires:
- deploy-staging
filters:
branches:
only:
- circleci-project-setup # remove this before releasing
- develop
- /^hotfix\/.*/
- /^release\/.*/