티스토리 뷰

IT

docker springboot jenkins 자동배포

onnablog 2023. 7. 25. 21:10

1. SSH Key 관리

1. SSH Key 생성

# jenkins를 container에 올렸기 때문에, 컨테이너로 접속
docker exec -it jenkins /bin/bash

# SSH Key 생성
ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa

2. public key 등록 및 확인

1. GitHub 서버

1. Settings - SSH and GPG keys - New SSH key - public key 등록

2. GitHub에 정상등록 되었는지 확인

# GitHub에 확인
ssh -T git@github.com

2. 배포 서버

# 공개키 등록
ssh-copy-id 사용자계정@아이피

# 접속 확인
ssh 사용자계정@아이피

3. private key 등록

Jenkins 관리 - Security - Credentials - Add Credentials

  • Kind: SSH Username with private key
  • ID: private key
  • Private Key - Enter directly - Add: private key 등록

2. JDK 설치

  1. Jenkins 관리 - Plugins - Available plugins - Eclipse Temurin installer Plugin 설치
  2. Jenkins 관리 - Tools - JDK installations 등록

3. git push

1. docker-compose.yml

version: '3'

services:
  onna:
    build: .
    container_name: onna
    restart: always
    ports:
      - "80:8080"
    volumes:
      - ~/workspace/docker/onna:/otp/app/workspace
    environment:
      TZ: "Asia/Seoul"

2. Dockerfile

FROM eclipse-temurin:17.0.7_7-jdk

CMD ["java", "-jar", "/otp/app/workspace/src/ROOT.jar"]

3. jenkins.sh

#!/bin/bash

# 프로젝트 이름
JAR_NAME=`basename ./build/libs/*.jar .jar`

# 원격지 주소
REMOTE_ADDRESS="사용자이름@아이피"

# 원격지 deploy 폴더 이름
DEPLOY_FOLDER_NAME=`date "+%Y%m%d%H%M%S"`

# workspace 폴더 생성
ssh ${REMOTE_ADDRESS} mkdir -p "~/workspace/docker/${JAR_NAME}/src"
ssh ${REMOTE_ADDRESS} mkdir -p "~/workspace/docker/${JAR_NAME}/upload"

# deploy 폴더 생성
ssh ${REMOTE_ADDRESS} mkdir -p "~/workspace/deploy/${DEPLOY_FOLDER_NAME}"

# deploy 파일 이동
scp ./build/libs/${JAR_NAME}.jar ./deploy/docker-compose.yml ./deploy/Dockerfile ${REMOTE_ADDRESS}:"~/workspace/deploy/${DEPLOY_FOLDER_NAME}"

# deploy 파일 복사
ssh ${REMOTE_ADDRESS} cp "~/workspace/deploy/${DEPLOY_FOLDER_NAME}/${JAR_NAME}.jar" "~/workspace/docker/${JAR_NAME}/src/ROOT.jar"

# docker
# docker image prune -a -f 미사용 이미지 삭제
ssh ${REMOTE_ADDRESS} docker stop ${JAR_NAME}
ssh ${REMOTE_ADDRESS} docker rm ${JAR_NAME}
ssh ${REMOTE_ADDRESS} docker compose -f "~/workspace/deploy/${DEPLOY_FOLDER_NAME}/docker-compose.yml" up -d

4. jenkins

1. 새로운 Item

2. General - GitHub project - Project url 등록

3. 소스 코드 관리 ( git )

  • Repository URL: GitHub url 등록
  • Credentials: 위에 등록한 Credentials 선택
  • Branches to build: */main 변경

4. 빌드 유발

Poll SCM - Schedule: * * * * *

5. Build Steps

Execute shell

# 권한
chmod +x ./gradlew
chmod +x ./deploy/jenkins.sh

Invoke Gradle script

  1. Use Gradle Wrapper 선택
  2. Tasks: clean build -x test

Execute shell

# 배포 sh 실행
./deploy/jenkins.sh

'IT' 카테고리의 다른 글

docker vsftpd 설치 ( ftp )  (0) 2023.08.13
open jdk 설치 ( 윈도우 )  (0) 2023.07.22
docker jenkins 설치  (0) 2023.07.22
우분투(ubuntu) ufw 방화벽 설정  (0) 2023.07.20
우분투(ubuntu) docker 설치  (0) 2023.07.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함