stages: - setup - lint - build - test - publish - deploy cache: paths: - node_modules/ - dist/ setup: image: node:12 stage: setup script: - npm ci es:lint: image: node:12 stage: lint script: - npm run lint:es sass:lint: image: node:12 stage: lint script: - npm run lint:sass ts:build: image: node:12 stage: build only: - master script: - API_URL=http://web.sik.party:8000 npm run build prod:build: image: node:12 stage: build only: - production script: - API_URL=https://sika.sik.party/api npm run build # test:unit: # image: node:12 # stage: test # script: # - npm run test:unit test:e2e: image: circleci/node:12-browsers stage: test only: - master script: - npm run test:e2e publish: stage: publish image: docker:stable services: - docker:stable-dind only: - master script: - docker info - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker build . -t "$IMAGE_NAME" - docker push "$IMAGE_NAME" publish_prod: stage: publish image: docker:stable services: - docker:stable-dind only: - production script: - docker info - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker build . -t "$IMAGE_NAME":prod - docker push "$IMAGE_NAME":prod deploy_dev: stage: deploy image: alpine:latest environment: name: dev url: http://web.sik.party:3000 only: - master before_script: - pwd - apk add --update openssh - ssh -V - mkdir -p ~/.ssh - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' script: - scp docker-compose.yml $DEV_SSH_USER@$DEV_SSH_HOST:~/deployment-frontend/docker-compose.yml - scp .deploy_dev.sh $DEV_SSH_USER@$DEV_SSH_HOST:~/deployment-frontend/deploy_dev.sh - ssh $DEV_SSH_USER@$DEV_SSH_HOST "docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY" - ssh $DEV_SSH_USER@$DEV_SSH_HOST "bash ~/deployment-frontend/deploy_dev.sh \"$IMAGE_NAME\"" deploy_production: stage: deploy image: docker:stable only: - production environment: name: production url: sika.sik.party when: manual variables: DOCKER_HOST: $CI_DOCKER_HOST DOCKER_TLS_VERIFY: 1 before_script: - mkdir -p ~/.docker - echo "$TLSCACERT" > ~/.docker/ca.pem - echo "$TLSCERT" > ~/.docker/cert.pem - echo "$TLSKEY" > ~/.docker/key.pem - docker login -u gitlab-ci-token -p "$CI_BUILD_TOKEN" "$CI_REGISTRY" script: - docker stack deploy --with-registry-auth -c stack-compose.yml "$SERVICE_NAME" after_script: - docker logout "$CI_REGISTRY"