[Jenkins] Docker 자동 빌드 (3)

Mineru·2022년 1월 28일
0
post-custom-banner

Docker Image Build Script

파일 이름은 Docker_CD.sh로 하겠다.

#!/bin/bash

DOCKER_REPOSITORY_NAME=$1
# docker hub id
ID=DOCKER_HUB_ID
# docker hub password
PW=DOCKER_HUB_PW

TAG=$(docker images | awk -v DOCKER_REPOSITORY_NAME=$DOCKER_REPOSITORY_NAME '{if ($1 == DOCKER_REPOSITORY_NAME) print $2;}')

if [[ $TAG =~ [0-9]\.[0-9]{1,2} ]]; then
    NEW_TAG_VER=$(echo $TAG 0.01 | awk '{print $1+$2}')
    echo "현재 버전은 $TAG 입니다."
    echo "새로운 버전은 $NEW_TAG_VER 입니다"
else
    # echo "새롭게 만들어진 이미지 입니다."
    NEW_TAG_VER=0.01
fi

# 현재 위치에 존재하는 DOCKER FILE을 사용하여 빌드
docker build -t $DOCKER_REPOSITORY_NAME:$NEW_TAG_VER .

# docker hub에 push 하기위해 login
docker login -u $ID -p $PW

if [ $NEW_TAG_VER != "0.01" ]; then
	# 과거의 TAG 삭제
    docker rmi $DOCKER_REPOSITORY_NAME:$TAG
fi
# 새로운 태그를 설정한 image를 생성
docker tag $DOCKER_REPOSITORY_NAME:$NEW_TAG_VER $ID/$DOCKER_REPOSITORY_NAME:$NEW_TAG_VER

# docker hub에 push
docker push $ID/$DOCKER_REPOSITORY_NAME:$NEW_TAG_VER

# tag가 "latest"인 image를 최신 버전을 통해 생성
docker tag $DOCKER_REPOSITORY_NAME:$NEW_TAG_VER $ID/$DOCKER_REPOSITORY_NAME:latest

# latest를 docker hub에 push
docker push $ID/$DOCKER_REPOSITORY_NAME:latest

# 버전 관리에 문제가 있어 latest를 삭제
docker rmi $ID/$DOCKER_REPOSITORY_NAME:latest
docker rmi $ID/$DOCKER_REPOSITORY_NAME:$NEW_TAG_VER

Create CD Script

자동 배포

AWS EC2 서버 생성

...생략

SSH Plugin과 Publish Over SSH 설치

2022년 1월 12일 기준 보안 문제로 현재 Plugin 설치 비활성화 상태

Jenkins 관리 -> 시스템 설정 -> Publish over SSH 탭 이동 -> key에 접근키 입력 -> SSH ServersName, Hostname, Username, Remote Directory 입력 -> Test Configuration 버튼 눌러서 연결 테스트

출처

https://www.dongyeon1201.kr/9026133b-31be-4b58-bcc7-49abbe893044

profile
Daily Coding
post-custom-banner

0개의 댓글