백엔드 개발자

젠킨스 CI/CD 프리스타일 프로젝트 vs 파이프라인 본문

인프라

젠킨스 CI/CD 프리스타일 프로젝트 vs 파이프라인

임잠탱 2023. 9. 17. 11:41

저번 프로젝트에서는 freestyle project로 ci/cd 환경을 구성했었다
이번에도 빌드배포 과정이 간단하기 때문에 freestyle project로 구축할 수 있을 것 같았지만
파이프라인이 좀 더 세부적으로 컨트롤 할 수 있고 많이 사용되기 때문에 파이프라인으로 프로젝트를 만들어 주었다.

저번과 달라진 점은
저번 프로젝트에서는 도커 컴포즈 사용 x , 프리스타일 프로젝트

쓰고 보니 별거없네

결론은 이번에는 도커 컴포즈와 파이프라인을 사용하였다.

이번 글에서는 간단하게 저번과 달랐던 점만 적어보면
프리스타일 프로젝트에서는 Execute Shell 을 이용해서 스크립트를 작성했는데 webhook 이 온 기점으로 따로 깃 레포지토리를
클론하거나 하지 않고 바로 작업디렉토리가 깃 레포지토리에서 시작하는 것처럼 shell을 작성할 수 있었다.

컴포즈 파일을 사용해서 작성을 하니 volume이나 network 가 실행되는 디렉토리의 이름 + "_" + (volume or network 이름으로 만들어졌다.
그래서 젠킨스 작업디렉토리와 이름을 맞춰주어야 했다.

또, 처음 모든 컨테이너들을 정의한 컴포즈 파일과 ci/cd 에 사용되는 컴포즈 파일을 분리해 주었는데 (변경이 필요한 컨테이너만 따로 정의해주었다)
docker-compose down을 할 때 network까지 지워져서 문제가 됐었다. (해당 네트워크를 사용하는 컨테이너들이 있음)
그래서 네트워크를 외부 네트워크로 사용하고 default로 정의해줬다.

networks:
  default:
    external:
      name: mynetwork

외부 네트워크를 사용하니 docker-compose down을 해주어도 네트워크가 지워지지 않았다.

이외에도 jdk 17버전을 사용하기 위해서 젠킨스에 openjdk 17버전을 설치하고 젠킨스 관리에서 tools에 추가해 주었는데
프리스타일 프로젝트에서는 프로젝트 설정에 Jdk를 지정해주었는데 파이프라인에서는 스크립트안에

  tools {
        jdk 'openjdk-17-jdk'
    }

이렇게 추가해 주어야 했고, 젠킨스에 볼륨을 지정해주었지만 테스트과정에서 jenkins컨테이너를 멈추거나 지웠다 다시 실행할 때
설치한 jdk가 없는 문제 등이 있었다. /var/jenkins_home으로 볼륨을 지정해주었는데 jdk관련해서는 이곳에 저장이 안되어서 그런 것 같다.

그래서 호스트의 자바 폴더와 마운트를 해주었는데 해결이 안되었다. (아마도 jdk관련 파일 하나가 아니라 여러 곳에 연결되어있어서 그런건가 하는 생각이다..)
이건 apt 을 통한 설치파일들이 어디 저장되는지 확인하고 마운팅해주면 될 것 같다.

이제 젠킨스는 중단없이 계속 사용할 것이기 때문에 따로 추가 마운트는 안해주었다.

'인프라' 카테고리의 다른 글

Jenkins Mattermost 알림 설정하기  (0) 2023.09.17
Nginx 이미 주소가 할당 되어 실행 불가  (0) 2023.09.17
Comments