Update .gitlab-ci.yml file
This commit is contained in:
		@@ -1,42 +1,59 @@
 | 
			
		||||
# You can override the included template(s) by including variable overrides
 | 
			
		||||
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
 | 
			
		||||
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
 | 
			
		||||
# Dependency Scanning customization: https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#customizing-the-dependency-scanning-settings
 | 
			
		||||
# Container Scanning customization: https://docs.gitlab.com/ee/user/application_security/container_scanning/#customizing-the-container-scanning-settings
 | 
			
		||||
# Note that environment variables can be set in several places
 | 
			
		||||
# See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
 | 
			
		||||
stages:
 | 
			
		||||
stages:          # List of stages for jobs, and their order of execution
 | 
			
		||||
  - build
 | 
			
		||||
  - docker
 | 
			
		||||
  - deploy
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
variables:
 | 
			
		||||
  CI_REGISTRY_IMAGE: dergeorg
 | 
			
		||||
  TAG_LATEST: "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest"
 | 
			
		||||
build-job:
 | 
			
		||||
  CI_REGISTRY_IMAGE: docker.dergeorg.at/dergeorg
 | 
			
		||||
  SERVICE: todo-service
 | 
			
		||||
  Docker_name:  gitlab-todo-service
 | 
			
		||||
  TAG_LATEST: $CI_REGISTRY_IMAGE/$Docker_name:latest
 | 
			
		||||
  Project_name: todo-service
 | 
			
		||||
  Docker_url:  docker.dergeorg.at
 | 
			
		||||
  Docker_namespace:  dergeorg
 | 
			
		||||
  DOCKER_TAG:  latest
 | 
			
		||||
  ENV: test
 | 
			
		||||
  PORT_HOST: 2222
 | 
			
		||||
  PORT_CONTAINER: 2222
 | 
			
		||||
  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: maven:3.6.3-jdk-11-slim
 | 
			
		||||
  stage: build
 | 
			
		||||
  variables:
 | 
			
		||||
    MAVEN_OPTS: "-Dmaven.repo.local=${CI_PROJECT_DIR}/.repository/"
 | 
			
		||||
  cache:
 | 
			
		||||
    key: maven
 | 
			
		||||
    paths: [.repository/]
 | 
			
		||||
  script:
 | 
			
		||||
  - mvn clean install && mvn package -B -e
 | 
			
		||||
    - mvn clean install -DskipTests && mvn package -B -e -DskipTests
 | 
			
		||||
    - export
 | 
			
		||||
  artifacts:
 | 
			
		||||
    paths:
 | 
			
		||||
      - target/*.jar
 | 
			
		||||
publish-job:
 | 
			
		||||
 | 
			
		||||
publish-job:       # Building docker image and publishing it
 | 
			
		||||
  image: docker:latest
 | 
			
		||||
  stage: docker
 | 
			
		||||
  services:
 | 
			
		||||
  - docker:19.03-dind
 | 
			
		||||
    - docker:dind
 | 
			
		||||
  script:
 | 
			
		||||
  - docker build -t $TAG_LATEST .
 | 
			
		||||
  - docker login -u $DOCKER_USER -p $DOCKER_PW
 | 
			
		||||
  - docker push $TAG_LATEST
 | 
			
		||||
deploy-job:
 | 
			
		||||
    - docker login $DOCKER_URL -u $DOCKER_USER -p $DOCKER_PW
 | 
			
		||||
    - 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 )
 | 
			
		||||
    - '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
 | 
			
		||||
@@ -44,10 +61,7 @@ deploy-job:
 | 
			
		||||
    - ssh-keyscan $SERVER_IP >> ~/.ssh/known_hosts
 | 
			
		||||
    - chmod 644 ~/.ssh/known_hosts
 | 
			
		||||
  script:
 | 
			
		||||
  - ssh $SSH_USER@$SERVER_IP "docker login -u $DOCKER_USER -p $DOCKER_PW"
 | 
			
		||||
  - ssh $SSH_USER@$SERVER_IP "docker pull $TAG_LATEST"
 | 
			
		||||
  - ssh $SSH_USER@$SERVER_IP "docker container rm -f my-app || true"
 | 
			
		||||
  - ssh $SSH_USER@$SERVER_IP "docker run -d -p $SERVER_IP:8888:8080 --name my-app
 | 
			
		||||
    $TAG_LATEST"
 | 
			
		||||
include:
 | 
			
		||||
- template: Security/Secret-Detection.gitlab-ci.yml
 | 
			
		||||
    - 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 spring.config.import='configserver:$CONFIG_HTTP://$CONFIG_USER$CONFIG_URL/todo-config' -e PROJEKTNAME_UNIQUE='$Project_name:$CI_JOB_ID' -e PROJEKTNAME='$Project_name' -e HOSTNAME=$EUREKA_HOSTNAME -e EUREKAPORT=$EUREKA_PORT -e server.port=$PORT_CONTAINER -e CONFIGPORT=$CONFIG_PORT -e KEY='$CONFIG_KEY' -e CONFIGURL='$CONFIG_URL' -e CONFIGUSER='$CONFIG_USER' -e CONFIGHTTP=$CONFIG_HTTP -p $PORT_HOST:$PORT_CONTAINER $DOCKER_URL/$TAG_LATEST"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user