Update .gitlab-ci.yml file

This commit is contained in:
Administrator 2022-05-06 23:50:30 +00:00
parent d4b95138ee
commit 2fb2479b43

View File

@ -1,53 +1,67 @@
# You can override the included template(s) by including variable overrides stages: # List of stages for jobs, and their order of execution
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings - build
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings - docker
# Dependency Scanning customization: https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#customizing-the-dependency-scanning-settings - deploy
# 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:
- build
- docker
- deploy
variables: variables:
CI_REGISTRY_IMAGE: dergeorg CI_REGISTRY_IMAGE: docker.dergeorg.at/dergeorg
TAG_LATEST: "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest" SERVICE: todo-service
build-job: 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 image: maven:3.6.3-jdk-11-slim
stage: build stage: build
variables:
MAVEN_OPTS: "-Dmaven.repo.local=${CI_PROJECT_DIR}/.repository/"
cache:
key: maven
paths: [.repository/]
script: script:
- mvn clean install && mvn package -B -e - mvn clean install -DskipTests && mvn package -B -e -DskipTests
- export - export
artifacts: artifacts:
paths: paths:
- target/*.jar - target/*.jar
publish-job:
publish-job: # Building docker image and publishing it
image: docker:latest image: docker:latest
stage: docker stage: docker
services: services:
- docker:19.03-dind - docker:dind
script: script:
- docker build -t $TAG_LATEST . - docker login $DOCKER_URL -u $DOCKER_USER -p $DOCKER_PW
- docker login -u $DOCKER_USER -p $DOCKER_PW - docker build -t $DOCKER_URL/$TAG_LATEST --cache-from $DOCKER_URL/$TAG_LATEST .
- docker push $TAG_LATEST - docker push $DOCKER_URL/$TAG_LATEST
deploy-job:
deploy-job: # Deploy docker image on ssh server
image: alpine:latest image: alpine:latest
stage: deploy stage: deploy
tags: tags:
- deployment - deployment
before_script: 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) - eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh - mkdir -p ~/.ssh
- chmod 700 ~/.ssh - chmod 700 ~/.ssh
- ssh-keyscan $SERVER_IP >> ~/.ssh/known_hosts - ssh-keyscan $SERVER_IP >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts
script: script:
- ssh $SSH_USER@$SERVER_IP "docker login -u $DOCKER_USER -p $DOCKER_PW" - ssh $SSH_USER@$SERVER_IP "docker login $DOCKER_URL -u $DOCKER_USER -p $DOCKER_PW"
- ssh $SSH_USER@$SERVER_IP "docker pull $TAG_LATEST" - ssh $SSH_USER@$SERVER_IP "docker push $DOCKER_URL/$TAG_LATEST"
- ssh $SSH_USER@$SERVER_IP "docker container rm -f my-app || true" - ssh $SSH_USER@$SERVER_IP "docker container rm -f $Docker_name || true"
- ssh $SSH_USER@$SERVER_IP "docker run -d -p $SERVER_IP:8888:8080 --name my-app - 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"
$TAG_LATEST"
include:
- template: Security/Secret-Detection.gitlab-ci.yml