SY 개발일지
article thumbnail
[CI/CD] 도커와 젠킨스, 그리고 WebHooks로 Spring boot 자동 배포로직 만들기
프로젝트/CICD 2024. 6. 19. 15:21

다음과 같이 빌드가 잘 되는 것을 확인하였습니다. 그러면 이제 github 특정 브랜치에 커밋 이벤트가 발생하면 자동으로 배포가 되는 로직을 만들어 주겠습니다. 이러한 로직은 WebHooks를 통해 이루어집니다. 저의 경우에는 master 브런치에 커밋이 푸시될 때 배포가 되도록 하겠습니다. 젠킨스 설정플러그인 설치우선 웹 훅을 이용하기 위해 Generic Webhook Trigger 라는 플러그인을 설치해주도록 하겠습니다.파이프라인 설정이전에 설정한 파이프라인을 수정해보도록 하겠습니다.파이프라인의 상세 내용에 build triggers를 보면 generic Webhook Trigger가 추가된 것을 확인할 수 있습니다. 먼저 Post content parameters를 입력해보도록 하겠습니다. 위에서 ..

article thumbnail
[트러블슈팅][QueryDSL/CI/CD] Attempt to recreate a file for type QClass 해결
프로젝트/CICD 2024. 6. 19. 14:45

프로젝트를 배포하며 자꾸 아래와 같은 에러가 발생하였습니다.+ chmod +x gradlew+ ./gradlew clean bootJarStarting a Gradle Daemon (subsequent builds will be faster)> Task :cleanQuerydslSourcesDir> Task :clean UP-TO-DATE> Task :initQuerydslSourcesDir> Task :compileQuerydsl> Task :compileJavaAttempt to recreate a file for type com.restgram.global.entity.QBaseEntityerror: Attempt to recreate a file for type com.restgram.global..

article thumbnail
[CI/CD] 도커와 젠킨스를 통해 스프링부트 배포하기 with Github
프로젝트/CICD 2024. 6. 18. 18:28

이번 포스팅에서는 깃허브에 있는 스프링부트 코드를 Webhooks를 이용해 배포해보도록 하겠습니다. 젠킨스 안에 도커 인 도커 설치젠킨스를 설치할 때 해당 옵션을 추가하였습니다. 이는 도커 인 도커를 가능하게 해주는 옵션입니다.만약 하지 않았다면 젠킨스를 삭제한 후, 다시 올려주어야 합니다.-v /var/run/docker.sock:/var/run/docker.sock 1️⃣ Jenkins 컨테이너에 접속합니다.docker exec -it jenkins-server /bin/bash 2️⃣ sudo 를 사용하기 위해 관리자 모드로 들어갑니다.su - 3️⃣ Jenkins 안에 Docker를 설치합니다.# Docker 설치## - Old Version Removeapt-get remove docker do..

article thumbnail
[AWS] 볼륨 크기 수정하기
프로젝트/CICD 2024. 6. 18. 18:28

빌드를 하려는데 자꾸 용량이 부족해서 실행이 안되었다. 그래서 AWS의 볼륨의 크기를 수정해보고자 한다. 참고로 default 볼륨 크기는 8GB이고, 프리티어 기준 최대 30GB까지 늘릴 수 있다. 1. AWS > 인스턴스 하단 스토리지 > volume에서 볼륨 수정 클릭저는 지금 16GB까지 올린 상태인데, 처음 하시는 분은 8GB가 할당되어 있을 것입니다. 2. 크기 설정수정할 크기를 입력한다. 3. 완료가 될 때까지 대기볼륨 상태가 modifying -> optimizing -> 사용중이 될 때까지 일정 시간이 소요됩니다. 완료가 될 때까지 기다려주세요. 4. 확인df -h완료가 되면 df -h 명령어를 통해 수정이 되었는지 확인합니다.만일 안되었다면 파티션이 할당되지 않았을 경우일 수 있으니 다..

article thumbnail
[트러블 슈팅][CI/CD] 젠킨스 플러그인 설치하기
프로젝트/CICD 2024. 6. 18. 15:26

저의 경우에는 항상 ..! 젠킨스 플러그인이 한번에 다운로드가 되지 않았습니다. 몇번 더 retry 하다가도 실패하면 수동으로 설치해주어야 합니다. 젠킨스 Dashboard > Jenkins 관리 > Plugins > Installed plugins에 가면 다음과 같이 실패한 항목들도 함께 확인할 수 있습니다. 눈에 띄는 에러는 총 2개로 로드에 실패했다(Failed to load)는 에러와 없다(is missing)는 에러 가 존재합니다.1️⃣ 로드에 실패로드에 실패한 에러는 다음과 같이 Failed to load라고 명시되어 있습니다. 보통 버전이 상이한 경우가 많습니다. 그래서, 해당 플러그인으로 가버튼을 통해 다운그레이드 등으로 버전을 맞추어 주면 됩니다. 2️⃣ 플러그인이 존재하지 않음예를 들어..

article thumbnail
[CI/CD] 도커에 젠킨스 설치하기 with 스왑메모리 설정
프로젝트/CICD 2024. 6. 18. 02:46

이번에는 CI/CD를 위해 도커에 젠킨스를 설치해보도록 하겠습니다. 젠킨스는 간단히 말해 CI/CD를 위한 오픈 소스 도구로 소프트웨어 개발 생명주기를 자동화해줍니다.예를 들어 우리가 깃허브에 깃을 커밋하면, 이를 감지하여 배포까지 해줍니다 !! 아주 편리한 도구라고 할 수 있는데 한번 다운받아 보도록 하겠습니다. 근데 그 전에 ! 우리의 AWS 프리티어 EC2는 메모리가 작습니다. 그래서 메모리를 많이 사용하는 젠킨스를 그냥 설치하면 서버가 다운될 확률이 아주 높습니다.(만약 서버가 다운되었으면 인스턴스를 재부팅해주면 됩니다)그래서 먼저 스왑 메모리를 설정한 후 젠킨스를 설치해주도록 하겠습니다. 스왑메모리 설정스왑 메모리란 실제 메모리가 가득 찼는데 더 많은 메모리가 필요로 할 때, 하드디스크의 공간을..

article thumbnail
[CI/CD] 도커에 MySQL 이미지 올리기 & MySQL 워크벤치와 연동하기
프로젝트/CICD 2024. 6. 18. 00:21

서버도 만들었고, 도커도 설치했으니 이제 프로젝트에 필요한 요소들을 하나씩 설정해주도록 하겠습니다.그래서 이번 포스팅에서는 도커에 MySQL 이미지를 올리고, 올린 DB를 MySQL 워크벤치와 연동해보도록 하겠습니다.🥰 MySQL Docker 이미지 설치MySQL Docker 이미지 다운로드다음 명령어로 MySQL LTS 버전 Docker 이미지를 다운로드합니다.docker pull mysql 다운로드한 이미지 확인다음 명령어로 다운로드한 Docker 이미지를 확인합니다.docker images MySQL Docker 컨테이너 생성다음 명령어로 컨테이너를 생성합니다.컨테이너 이름: --name 뒤에 컨테이너 이름을 입력합니다.비밀번호:  에서 비밀번호를 입력하는데  와 > 는 입력하지 않습니다.MySQ..

article thumbnail
[CI/CD] 우분투 서버에 Docker 설치하기
프로젝트/CICD 2024. 6. 17. 23:23

프로젝트를 배포하기에 앞서, Docker를 설치해주도록 하겠습니다.도커는 각각의 응용프로그램들을 컨테이너화하여 배포할 수 있도록 해줍니다. 따라서 프로그램들을 편하게 관리하기 위해 설치해줄게요. 먼저 저의 실행환경은 Ubuntu 24.04 LTS 버전입니다.  1️⃣ 시스템 업데이트sudo apt update 2️⃣ 필요한 의존성 패키지 설치sudo apt install -y apt-transport-https ca-certificates curl software-properties-common3️⃣ Docker 공식 GPG 키 추가curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrin..

article thumbnail
[CI/CD] AWS EC2 프리티어 인스턴스 생성하기 & 터미너스 연결
프로젝트/CICD 2024. 6. 17. 20:30

Restagram 프로젝트가 메인 구현요소가 완성되어 1차 배포를 해보려고 합니다. 여러가지 배포 방법이 있지만, 저는 AWS의 EC2를 이용하여 배포해보겠습니다.그러기 위해 먼저 AWS에서 인스턴스를 생성해보겠습니다. EC2 인스턴스 시작하기AWS의 EC2 페이지 접속저의 경우에는 서울로 지역을 설정(자동으로 설정됨)되어 있습니다.https://ap-northeast-2.console.aws.amazon.com/ec2/home?region=ap-northeast-2#Home: https://ap-northeast-2.console.aws.amazon.com/ec2/home?region=ap-northeast-2#Home: ap-northeast-2.console.aws.amazon.com 하단의 인스턴..