PromucFlow_constructor/app/client/.gitlab-ci.yml
2020-04-17 08:17:25 +00:00

144 lines
3.8 KiB
YAML

.only-default: &only-default
only:
- release
- master
- merge_requests
.set_env_variables: &set_env_variables
- |
if [ "$CI_COMMIT_BRANCH" == "master" ]; then
REACT_APP_ENVIRONMENT="PRODUCTION"
elif [ "$CI_COMMIT_BRANCH" == "release" ]; then
REACT_APP_ENVIRONMENT="STAGING"
REACT_APP_BASE_URL="https://release-api.appsmith.com"
else
REACT_APP_ENVIRONMENT="DEVELOPMENT"
REACT_APP_BASE_URL="https://release-api.appsmith.com"
fi
image: cypress/base:10.16.3
variables:
npm_config_cache: "$CI_PROJECT_DIR/.npm"
CYPRESS_CACHE_FOLDER: "$CI_PROJECT_DIR/cache/Cypress"
DOCKER_DRIVER: overlay
DOCKER_IMAGE_NAME: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- .npm
- cache/Cypress
- node_modules
stages:
- build
- test
- package
- deploy
react-build-release:
stage: build
script:
- *set_env_variables
- yarn install
# show where the Cypress test runner binaries are cached
- $(npm bin)/cypress cache path
# show all installed versions of Cypress binary
- $(npm bin)/cypress cache list
- $(npm bin)/cypress verify
- REACT_APP_ENVIRONMENT=$REACT_APP_ENVIRONMENT REACT_APP_BASE_URL=$REACT_APP_BASE_URL GIT_SHA=$CI_COMMIT_SHORT_SHA yarn build
artifacts:
expire_in: 1 week
paths:
- build/
only:
- release
- merge_requests
cypress-test-release:
stage: test
script:
- *set_env_variables
- yarn global add serve
- serve -s build -p 3000 &
# This is required in order to ensure that all the test cases pass
- echo "127.0.0.1 dev.appsmith.com" >> /etc/hosts
- yarn test
artifacts:
when: always
expire_in: 1 week
paths:
- cypress/screenshots
- cypress/videos
only:
# We don't test on master right now because of changing environment variables for REACT_APP_BASE_URL. Need to figure out a way to configure that.
- release
- merge_requests
# cypress-test-fix:
# stage: build
# script:
# - *set_env_variables
# - yarn install
# # show where the Cypress test runner binaries are cached
# - $(npm bin)/cypress cache path
# # show all installed versions of Cypress binary
# - $(npm bin)/cypress cache list
# - $(npm bin)/cypress verify
# - curl https://s3.ap-south-1.amazonaws.com/dev.public.appsmith/react-build/build1.tar.gz --output build.tar.gz
# - tar xvf build.tar.gz
# - yarn global add serve
# - serve -s build -p 3000 &
# # This is required in order to ensure that all the test cases pass
# - echo "127.0.0.1 dev.appsmith.com" >> /etc/hosts
# - yarn test
# artifacts:
# when: always
# expire_in: 1 week
# paths:
# - cypress/screenshots
# - cypress/videos
# only:
# # We don't test on master right now because of changing environment variables for REACT_APP_BASE_URL. Need to figure out a way to configure that.
# - fix/test-revert
docker-package-release:
image: docker:dind
services:
- docker:dind
stage: package
script:
- *set_env_variables
- docker build -t appsmith/appsmith-editor:release .
- docker login -u $DOCKER_HUB_USERNAME -p $DOCKER_HUB_ACCESS_TOKEN
- docker push appsmith/appsmith-editor:release
only:
- release
react-build-prod:
stage: build
script:
- *set_env_variables
- yarn install
- REACT_APP_ENVIRONMENT=$REACT_APP_ENVIRONMENT GIT_SHA=$CI_COMMIT_SHORT_SHA yarn build
artifacts:
when: on_success
expire_in: 1 week
paths:
- build/
only:
- master
docker-package-prod:
image: docker:dind
services:
- docker:dind
stage: package
script:
- *set_env_variables
- docker build -t appsmith/appsmith-editor:latest .
- docker login -u $DOCKER_HUB_USERNAME -p $DOCKER_HUB_ACCESS_TOKEN
- docker push appsmith/appsmith-editor:latest
only:
- master