본문 바로가기
공부용/스프링 || 스프링부트

[jenkins] 남은거 마저하기 - 완 -

by alpakaka 2025. 5. 31.

저번에 이것저것 시도하다가 전부 막혔는데, 이젠 안되면 docker 에서 빼고 밖에서 돌리는 방식을 사용해야할 것 같다.

어쨋든 계속 진행해보자.

 

일단 진행해볼 사항은 파이프라인으로 docker 가 실행되는지 확인해볼 예정이다. 

pipeline 을 만들어본다.

현재 젠킨스 상황이다. 저번에 sock 을 없애고 해봤지만 docker daemon 이 실행중이지 않는다는 에러를 발견한 전적이 있기때문에

이것을 남겨두고 실행하는 방법을 찾는 중이다.

 

그래서 나눠본다. 스크립트를 하는 job(?)은 Testing 과 build를 맡고, 파이프라인은 도커만 빌드하는 것으로 진행해본다.

파이프라인이 정답이었나보다. 나는 왜 원격스크립트로 해결하려고 했지.. 공식문서도 계속 파이프라인이라고 했는데.

역시 여러개가 섞이면 어려운것같다. 일단 permission denied 는 간단히 jenkins 가 권한이 없다는 것이므로 여러가지 해결책이 있다.

1. 권한주기

2. 도커허브에서 로그인하고 그 계정 권한으로 설정하기

 

지금까지 찾아본건 이정도이다. 

그래서 직접 실행해보니

write 권한이 없다는 것 같다. 그래서 이 권한을 root 에게 줘야하는 것 같다.

 

그래서 줬다.

docker file 을 만들어서 jenkins 에게 docker 그룹에 넣어주도록 설정해주었다.

그런데도 docker permission denied 가 떴다.

 

docker-cli 를 설치하지 않아서 그런거라고 생각한다.

설치한다.

https://docs.docker.com/engine/install/debian/

 

Debian

Learn how to install Docker Engine on Debian. These instructions cover the different installation methods, how to uninstall, and next steps.

docs.docker.com

 

FROM jenkins/jenkins:lts

USER root
# 필수 패키지 설치
RUN apt-get update && \
    apt-get install -y \
        ca-certificates \
        curl \
        gnupg \
        lsb-release

# Docker 공식 GPG 키 추가
RUN install -m 0755 -d /etc/apt/keyrings && \
    curl -fsSL https://download.docker.com/linux/debian/gpg | \
    gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \
    chmod a+r /etc/apt/keyrings/docker.gpg

# Docker 저장소 추가 (arch 지정하지 않음 → 자동 감지)
RUN echo \
  "deb [signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker CLI 설치
RUN apt-get update && \
    apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin



RUN groupadd -f docker && usermod -aG docker jenkins

USER jenkins

공식문서의 힘을 빌려 잘 설치했다. 

참고로.. docker.sock 만 남겨놓았다. docker 에서 문제가 발생하는 듯 싶었다.

 

 

그리고 이제 docker 는 잘 돌아간다.

 

그런데 경로 설정을 잘못했는지 다음과 같은 에러가 발생했다.

jenkins  home 에서 docker compose 파일 찾는게 신기하긴 했지..

아무튼 이유를 알았으니 수정해주기로 한다.

알고보니 git 에서 clone 을 안받아와서 생기는 문제였다. 나는 어차피 오픈이 되어있는 레포라서 그냥 가져오는 걸로 선택했다.

 

 

이 문제가 뭔가 했더니 jenkins도  docker compose up --build 에 포함되어있어서 이름 중복된다고 안된다고 하는 거였다.

생각해보니 얘는 docker compose 로 빌드할 당시에 만들필요가 없는 애라..

 

그래서 jenkins 폴더에 넣어주었다.

 

잘되는 걸 보니 너무도 행복하다..

 

이제 해야하는 것은 testing 스크립트를 다시 복구 시키고 (docker 부분 삭제)

testing이 끝나면 저 docker build 가 잘 시행되는지 확인해야한다.

 

그럼 일단 testing 이 잘 되는지 확인해본다.

 

Testing 이 끝나자 docker build 가 실행되고 있는 것을 확인했다.

 

이제 main에 pr을 날려서 잘 되는지 확인해본다.

PR날려도 실행이 안되길래 잘못 만든 줄 알았는데

내가 그냥 설정으로 push 만 설정해놓은 거였다. 일단 이거는 다음에 해도 괜찮을 것 같으니 push 를 진행해보고 어떻게 되는지 확인해본다.

 

ngrok 관련으로 실행을 했어서 실행해서 설정을 바꿔야하는 모양인데 잘 기억이 안난다.

 

계속 시도하다보니 ngrok 관련 문제가 아니라 스프링 자체에 문제가 있었다.

별건 아니고, mysql 을 맨날 수동으로 만들었던 어렴풋이 기억나는 문제가 있었다.

그래서 새로 젠킨스가 만들어준 mysql 을 들어가니 table 이 하나도 없었다.

이건 아무리 봐도 내일해야겠다.