stages: # List of stages for jobs, and their order of execution - build - docker - deploy variables: FF_USE_FASTZIP: "true" # These can be specified per job or per pipeline ARTIFACT_COMPRESSION_LEVEL: "fast" CACHE_COMPRESSION_LEVEL: "fast" 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: 8889 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 cache: policy: pull-push key: NPM_DOWNLOAD_CACHE paths: - .npm/ build-job: # Building jar file image: node:lts-alpine stage: build script: - ls src/environments/ - echo "$APPLICATION_TODO_FRONTEND_TS" > src/environments/environment.ts - echo "$APPLICATION_TODO_FRONTEND_TS" > src/environments/environment.prod.ts - npm ci --cache .npm --prefer-offline - npm install -g @angular/cli - ng build --prod - ls artifacts: paths: - dist/ publish-job: # Building docker image and publishing it image: docker:latest stage: docker services: - docker:dind script: - docker login -u $DOCKER_USER -p $DOCKER_PW $DOCKER_URL - docker build -t $DOCKER_URL/$TAG_LATEST --cache-from $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 -p $PORT_HOST:$PORT_CONTAINER $DOCKER_URL/$TAG_LATEST"