저번에 이것저것 시도하다가 전부 막혔는데, 이젠 안되면 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 이 하나도 없었다.
이건 아무리 봐도 내일해야겠다.
'공부용 > 스프링 || 스프링부트' 카테고리의 다른 글
[mysql] 자동 table 생성 + [jenkins] webhook 설정 (0) | 2025.06.01 |
---|---|
[jenkins] ci/cd 마저하기 (5) (0) | 2025.05.28 |
[스프링 jenkins] ci/cd 마저하기2 (0) | 2025.05.17 |
[스프링 jenkins] ci/cd 마저하기 (0) | 2025.04.23 |
[스프링] 목표 찾기 (0) | 2025.04.15 |