[docker/jenkins] docker 컨테이너 안에서 jenkins CI&CD 배포 방법(2)

무1민·2023년 8월 26일
0

infra

목록 보기
6/14
post-thumbnail

Jenkins 접속

Jenkins가 잘 실행되었다면 본인URL:8080으로 접속하면 jenkins 화면이 나올 것이다.

Administrator password는 호스트 pc에서 실행중인 jenkins container를
docker logs [container_id]를 실행해 보았을 때 비밀번호를 확인할 수 있다.

권장 설정인 Install suggested plugins를 눌러 설치를 진행한다.
모든 과정이 완료되었다면 아래와 같은 페이지가 출력될 것이다.

Github Jenkins 연동

Github로 접속하여 Settings 안에서 Webhooks를 들어간다.

Add webhook을 통해 새롭게 webhook을 추가한다.

1. Payload URL은 본인 jenkins경로에 /github-webhook/을 추가한다.
2. Content type은 application/json으로 설정한다.
3. Active를 활성화 해주고 add Webhook을 누른다.

Docker-Hub Credentials 설정

  1. Jenkins 관리에서 Credentials에 들어가서 다음과 같이 Add credentials 선택
  2. Kind를 Username with password로 설정하고 Username을 Dockerhub name(email 아님), password를 기입하고 ID를 기술한다.

Jenkins Item 생성

  1. + 새로운 Item 선택

  2. name설정하고 Freestyle project 선택

  3. 소스 코드 관리에서 Git을 선택하고 Repository URL을 올릴 GIT 프로젝트 설정
    build될 branch도 설정 (github는 default가 master이다)

  4. 빌드 유발에서 GitHub hook trigger for GITScm polling 선택

  5. 빌드 환경 설정 Use secret text(s) or file(s)에서 Username and password(separated)를 선택하고 Username Variable에 DOCKER_HUB_USERNAME, Password Variable에 DOCKER_HUB_PASSWORD를 선택한다.

  6. Build Steps에서 add - Execute shell을 선택하고

# 대문자 'CD'면 안됨!
cd infra-services/eureka

chmod +x ./gradlew
./gradlew build

# Docker 이미지 빌드
docker build -t bangjinseong/eureka:${BUILD_NUMBER} -f Dockerfile .

# Docker Hub에 로그인 (이 부분은 Jenkins가 Docker Hub에 로그인 할 수 있도록 설정되어 있어야 합니다)
echo $DOCKER_HUB_PASSWORD | docker login -u $DOCKER_HUB_USERNAME --password-stdin

# Docker 이미지 푸시
docker push bangjinseong/eureka:${BUILD_NUMBER}

# 최신 이미지 pull 및 실행
docker pull bangjinseong/eureka:${BUILD_NUMBER}

# 이미 실행중인 동일한 이미지가 있으면 중지
CONTAINER_ID=$(docker ps -q --filter "publish=8761")
if [ ! -z "$CONTAINER_ID" ]; then
  docker stop $CONTAINER_ID
  docker rm $CONTAINER_ID
fi

docker run -d -p 8761:8761 bangjinseong/eureka:${BUILD_NUMBER}

을 본인의 프로젝트에 잘 맞게 설정한다.

설정을 완료하였으면 project에서 push가 발생했을 때 webhook으로 잘 인식받아 알아서 배포 업데이트가 되는 것을 확인할 수 있다.

profile
야호

0개의 댓글