image: node:12.16.3 stages: - test - build - deploy variables: MONGODB_VERSION: '4.2.6' MONGODB_URL: 'mongodb://mongodb:27017/test' PORT: '3002' JWT_SECRET: 'test' # http://docs.gitlab.com/ee/ci/yaml/README.html#cache cache: paths: - app/client/node_modules/ - app/server/node_modules/ test_client: stage: test script: - cd app/client - npm install - npm run test except: - master # only for now to speed up dev test_server: stage: test # Info: http://docs.gitlab.com/ee/ci/docker/using_docker_images.html#what-is-a-service services: - name: mongo:$MONGODB_VERSION alias: mongodb script: - cd app/server - npm install - npm run test except: - master # only for now to speed up dev build_client: stage: build tags: - docker-privileged image: docker:19.03.12 rules: - if: $CI_COMMIT_TAG when: always services: - docker:19.03.12-dind before_script: - echo $CI_REGISTRY - echo $CI_REGISTRY_USER - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY variables: CLIENT_IMAGE_TAG: $CI_REGISTRY_IMAGE#app:$CI_COMMIT_TAG script: - cd app/client - docker build -t $CLIENT_IMAGE_TAG . - docker tag $CI_COMMIT_TAG - docker push --all-tags $CLIENT_IMAGE_TAG build_server: stage: build tags: - docker-privileged rules: - if: $CI_COMMIT_TAG when: always image: docker:19.03.12 services: - docker:19.03.12-dind before_script: - echo $CI_REGISTRY - echo $CI_REGISTRY_USER - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY variables: SERVER_IMAGE_TAG: $CI_REGISTRY_IMAGE#server:$CI_COMMIT_TAG SERVER_RELEASE_IMAGE_TAG: $CI_REGISTRY_IMAGE#server:latest script: - cd app/server - docker build -t $SERVER_IMAGE_TAG . - docker tag $SERVER_IMAGE_TAG $SERVER_RELEASE_IMAGE_TAG - docker push --all-tags $SERVER_IMAGE_TAG