뭐든 즐기면서 ;)

java Bitbucket 자동 배포 / Bitbucket CD / 빗버킷 자동 배포 / Bitbucket pipelines 이용 본문

서버

java Bitbucket 자동 배포 / Bitbucket CD / 빗버킷 자동 배포 / Bitbucket pipelines 이용

Tada.*+ 2024. 9. 23. 16:25
728x90

필자는 Tag push할 때 CD가 발생하도록 설정하였으며, docker를 이용한 배포를 설정함.

파일 경로

저장소 내 파일 경로는 아래와 같음.

/bitbucket-pipelines.yml

/docker-file/path/Dockerfile

bitbucket-pipelines.yml 내용

image: gradle:7.5.0

pipelines:
  tags:
    '**':
      # docker 이미지 build 및 push
      - step:
          name: Build and Push Docker Image
          services:
            - docker
          script:
            # 환경변수 설정
            - export TAG=${BITBUCKET_TAG}
            - export DOCKER_FILE=./docker_file/path # Dockerfile이 있는 경로
            # java 소스 build
            - chmod +x gradlew  # 실행 권한 부여
            - ./gradlew clean generateProto bootJar # Gradle 빌드
            - mv ./build/libs/*.jar $DOCKER_FILE # Dockerfile이 있는 경로로 jar파일을 옮김.
            # Docker 이미지 빌드
            - docker build -t docker-repo/backend/management-system:$TAG $DOCKER_FILE
            # Docker 이미지 푸시
            - docker push docker-repo/backend/management-system:$TAG
            
      # 아래는 서버 배포
      - step:
          name: Deploy to Server using Docker Compose
          caches:
            - docker
          script:
            - export TAG=${BITBUCKET_TAG}  # 태그명 가져오기
            - pipe: atlassian/ssh-run:0.4.4
              variables:
                SSH_USER: 'user_id'
                SSH_KEY: $SSH_KEY  # Bitbucket 환경변수로 SSH 키 추가
                SSH_HOST: 'server-ip-or-hostname'
                SCRIPT: |
                  cd /path/to/your/docker-compose/files  # docker-compose.yml이 있는 위치로 이동. docker-compose.yml 내에 이미지 부분은 ${TAG}로 작성해 주어야 함.
                  docker-compose pull  # 레지스트리에서 도커 이미지 pull
                  docker-compose up -d  # 새로운 컨테이너 띄우기

Dockerfile 내용

# 베이스 이미지 설정
FROM openjdk:11-jre-slim

WORKDIR /

# JAR 파일을 컨테이너 내부로 복사
COPY *.jar /backend/api.jar

EXPOSE 9201

ENV TZ=Asia/Seoul
# 컨테이너 실행 시 JAR 파일 실행
ENTRYPOINT ["java", "-Dspring.profiles.active=prod", "-jar", "/backend/api.jar"]

 

728x90

'서버' 카테고리의 다른 글

NginX Stream 설정  (0) 2024.02.14
하드디스크 구성 요소 (초간단)  (0) 2024.01.17
alternatives 사용법  (0) 2023.11.17
NginX permission denied  (0) 2023.09.12
JMeter 사용방법  (0) 2023.08.30
Comments