mirror of
https://github.com/scratchfoundation/scratch-www.git
synced 2024-11-23 23:57:55 -05:00
133 lines
3 KiB
YAML
133 lines
3 KiB
YAML
version: 2.1
|
|
|
|
aliases:
|
|
- &defaults
|
|
docker:
|
|
- image: circleci/node:12-browsers
|
|
auth:
|
|
username: $DOCKERHUB_USERNAME
|
|
password: $DOCKERHUB_PASSWORD
|
|
working_directory: ~/repo
|
|
- &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
|
|
resource_class: medium+
|
|
steps:
|
|
- *restore_git_cache
|
|
- checkout
|
|
- *restore_npm_cache
|
|
- run:
|
|
name: "Run npm test to build"
|
|
command: |
|
|
npm --production=false install
|
|
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:
|
|
- develop
|
|
- /^hotfix\/.*/
|
|
- /^release\/.*/
|
|
- deploy-staging:
|
|
context:
|
|
- scratch-www-all
|
|
- scratch-www-staging
|
|
requires:
|
|
- build-staging
|
|
filters:
|
|
branches:
|
|
only:
|
|
- 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:
|
|
- develop
|
|
- /^hotfix\/.*/
|
|
- /^release\/.*/\
|