144 lines
3.8 KiB
YAML
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
|