image: node:10.15.1 variables: CYPRESS_CACHE_FOLDER: "$CI_PROJECT_DIR/cache/Cypress" cache: key: ${CI_COMMIT_REF_SLUG} paths: - node_modules - ${CYPRESS_CACHE_FOLDER} stages: - test - build - deploy - integration tests lint: stage: test script: - yarn install - yarn run lint flow: stage: test script: - yarn install - yarn run flow unit: stage: test script: - yarn install - yarn run test build development: stage: build script: - yarn install - yarn run build:dev artifacts: expire_in: 1 week paths: - build/dev build beta: stage: build script: - yarn install - yarn run build:beta only: - beta artifacts: expire_in: 1 week paths: - build/beta - scripts/s3sync.sh build stable: stage: build script: - yarn install - yarn run build:stable only: - stable artifacts: expire_in: 1 week paths: - build/stable - scripts/s3sync.sh build emulator and bridge image: variables: CONTAINER_NAME: "$CI_REGISTRY/emulator-bridge-tests" image: docker:latest services: - docker:dind before_script: - docker login $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD stage: build when: manual script: - docker pull $CONTAINER_NAME:latest || true - docker build --cache-from $CONTAINER_NAME:latest --tag $CONTAINER_NAME:$CI_COMMIT_SHA --tag $CONTAINER_NAME:latest . - docker push $CONTAINER_NAME:$CI_COMMIT_SHA - docker push $CONTAINER_NAME:latest deploy review: stage: deploy variables: GIT_STRATEGY: none dependencies: - build development environment: name: $CI_BUILD_REF_NAME url: $BASE_REVIEW_URL/$CI_BUILD_REF_NAME on_stop: delete review script: - echo "Deploy a review app" - '[ -z "${DEPLOY_BASE_DIR}" ] && echo "Deploy base dir cannot be empty" && exit 255' - env - mkdir -p "${DEPLOY_BASE_DIR}/${CI_BUILD_REF_NAME}" - echo "Copy dev build to web server ${DEPLOY_BASE_DIR}/${CI_BUILD_REF_NAME}..." - rsync --delete -va build/dev/ "${DEPLOY_BASE_DIR}/${CI_BUILD_REF_NAME}/" - curl "https://api.telegram.org/bot699197118:AAGXNTaC5Q-ljmy_dMvaIvAKy1XjlkA3Iss/sendMessage?chat_id=-1001354778014&text=https://trezor-wallet-dev.trezor.io/${CI_BUILD_REF_NAME}" - 'echo "Remove working dir, workaround for cache" && rm -r ./*' only: - branches tags: - deploy deploy stage beta: stage: deploy variables: GIT_STRATEGY: none AWS_ACCESS_KEY_ID: $STAGE_AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY: $STAGE_AWS_SECRET_ACCESS_KEY when: manual dependencies: - build beta script: - scripts/s3sync.sh stage beta only: - beta tags: - deploy deploy stage stable: stage: deploy variables: GIT_STRATEGY: none AWS_ACCESS_KEY_ID: $STAGE_AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY: $STAGE_AWS_SECRET_ACCESS_KEY when: manual dependencies: - build stable script: - scripts/s3sync.sh stage stable only: - stable tags: - deploy delete review: before_script: [] stage: deploy variables: GIT_STRATEGY: none when: manual environment: name: $CI_BUILD_REF_NAME action: stop script: - '[ -z "${DEPLOY_BASE_DIR}" ] && echo "Deploy dir can not be empty" && exit 1' - '[ -z "${CI_BUILD_REF_NAME}" ] && echo "Build name can not be empty" && exit 1' - '[ ! -d "${DEPLOY_BASE_DIR}/${CI_BUILD_REF_NAME}" ] && echo "Folder can not be found, skipping..." && exit 0' - 'rm -r "${DEPLOY_BASE_DIR}/${CI_BUILD_REF_NAME}"' only: - branches tags: - deploy integration tests: image: docker:latest services: - docker:dind stage: integration tests script: - 'export SHARED_PATH="$(dirname ${CI_PROJECT_DIR})/shared"' - rm -r ${SHARED_PATH} || true - docker build -f Dockerfile.test -t wallet-emulator-bridge-tests . - mkdir -p ${SHARED_PATH}/trezor-wallet/screenshots - mkdir -p ${SHARED_PATH}/trezor-wallet/videos - docker run --volume ${SHARED_PATH}/trezor-wallet/screenshots:/trezor-wallet/test/screenshots --volume ${SHARED_PATH}/trezor-wallet/videos:/trezor-wallet/test/videos --rm wallet-emulator-bridge-tests - find ${SHARED_PATH} - mkdir trezor-wallet - cp -r ${SHARED_PATH}/ trezor-wallet/ artifacts: when: always expire_in: 1 week paths: - trezor-wallet/