stages: # List of stages for jobs, and their order of execution - build - docker - deploy variables: CI_REGISTRY_IMAGE: docker.dergeorg.at/dergeorg SERVICE: todo-frontend Docker_name: gitlab-todo-frontend TAG_LATEST: $CI_REGISTRY_IMAGE/$Docker_name:latest Project_name: todo-frontend Docker_url: docker.dergeorg.at Docker_namespace: dergeorg DOCKER_TAG: latest ENV: test PORT_HOST: 9998 PORT_CONTAINER: 80 EUREKA_HOSTNAME: 192.168.1.65 EUREKA_PORT: 9995 CONFIG_PORT: 1111 CONFIG_URL: service.todo.gitlab.dergeorg.at CONFIG_HTTP: https build-job: # Building jar file image: nginx:1.17.1-alpine stage: build script: - echo "$APPLICATION_TODO_FRONTEND_TS" > src/environments/environment.prod.ts - npm install - npm run build artifacts: paths: - target/*.jar publish-job: # Building docker image and publishing it image: docker:latest stage: docker services: - docker:dind script: - docker login $DOCKER_URL -u $DOCKER_USER -p $DOCKER_PW - docker build -t $DOCKER_URL/$TAG_LATEST . - docker push $DOCKER_URL/$TAG_LATEST deploy-job: # Deploy docker image on ssh server image: alpine:latest stage: deploy tags: - deployment before_script: - 'command -v ssh-agent >/dev/null || ( apk add --update openssh )' - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - - mkdir -p ~/.ssh - chmod 700 ~/.ssh - ssh-keyscan $SERVER_IP >> ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts script: - ssh $SSH_USER@$SERVER_IP "docker login $DOCKER_URL -u $DOCKER_USER -p $DOCKER_PW" - ssh $SSH_USER@$SERVER_IP "docker push $DOCKER_URL/$TAG_LATEST" - ssh $SSH_USER@$SERVER_IP "docker container rm -f $Docker_name || true" - ssh $SSH_USER@$SERVER_IP "docker run -it -d --name $Docker_name -e -p $PORT_HOST:$PORT_CONTAINER $DOCKER_URL/$TAG_LATEST"