인프런 Dowon Lee님의 Jenkins를 이용한 CI/CD Pipeline 구축 강의를 수강하며 작성한 내용입니다.
우선 젠킨스에서 Git을 사용하기 위해 Git Plugin이 설치되어 있어야한다.
젠킨스 설치과정에서 "install suggested plugins"를 선택했다면 설치가 되어 있을 것이다.
설치되어 있는지 확인해보자!
Jenkins 관리에서 Plugins을 클릭해준다.
우리가 찾아야될 것은 GitHub plugin이다.
"Installed plugin" 항목에서 검색하여 있는지 확인해보자.
나는 잘 설치가 되어있었다.
이번엔 git에 관련된 설정을 확인해보자. Jenkins관리 -> Tools 클릭.
Git installatios 항목을 찾을 수 있다.
Path to Git executable에 git 이라고 되어 있을텐데 이는 도커에서 git이라는 명령어를 사용하는 것을 의미한다.
실행중인 도커 컨테이너에 접속하여 git --version
을 통해 버전을 확인해봤다.
여기서 Git을 사용하는 명령어를 내가 직접 커스텀 해볼 수 있는 것인지 확인해보기 위해 git 말고 다른 임이의 문자를 넣어봤다.
그리고 이런 오류를 볼 수 있었는데 git 이라는 것이 Git 실행파일의 경로를 적는 칸이 되는 것 같다.
역시 먼저 플러그인을 확인해 보자.
설치해야될 플러그인은 "Maven Integration"이다.
나는 Maven Integration은 설치되어 있지 않기 때문에 설치해줬다.
그 후 Maven 설정화면으로 이동하자. Jenkins 관리 -> Tools 클릭
Maven installations에서 Name부분에 적절한 이름을 작성해준다.
그리고 지금 Maven이 설치가 되어 있지 않을 수 있기 때문에 Install automatically 박스를 체크해줘서 자동으로 설치해준다.
다 해줬다면 Apply -> 저장 클릭
maven 설치여부는 컨테이너에 접속하여 mvn --version으로 확인할 수 있다.
나는 command not found로 설치가 되어있지 않은 것을 확인 했다.
그런데 저장을 해도 여전히 command not found이다....
강의에는 나와있지 않아서 검색을 해보니 추가적인 조치가 필요했다.
강의를 좀 더 들어보니 위 작업만으로는 안되는 거 같다.
이어서 진행해보자!
maven을 빌드하기 위해 새로운 프로젝트를 생성했다.
Maven project를 선택하여 만들어주자.
그 후 프로젝트 구성에 들어가 소스코드 관리 부분에 Git을 선택하고 repository 주소값을 넣어준다. 나는 강의에서 제공한 샘플 코드를 사용했다.
소스코드를 깃헙에서 가져왔고 다음에 해야될 것은 maven 빌드를 진행할 것인데 기본적으로 maven관련된 설정파일은 pom.xml에 저장을 한다. 그래서 이 파일을 기반으로 해서 maven 빌드를 하게 될 것이다.
maven 빌드시에 어떠한 항목들을 가지고 빌드할 것인지 지정할 수 있다.
Goals and options에 clean compile package
를 작성한다.
clean : 빌드를 기존에 한 것이 있다면 지워고 새롭게 빌드를 한다는 의미이다.
compile : 단어 그대로 컴파일. 빌드를 하겠다는 의미이다.
package : 컴파일 된 내용을 가지고 pom.xml파일에 지정된 내용에 따라서 package를 만들겠다는 의미이다.
기본적으로 maven에서는 jar, war의 두가지 형태의 패키지 파일을 제공하고 있다.
spring boot로 웹 어플리케이션을 만든 경우는 크게 2가지 형태로 실행될 수 있다.
1. 우리가 실행하고자 하는 프로그램이 임베디드 톰캣을 내장하고 있는 형태이기에 jar파일 형태로 패키징을 했을 때 jar파일을 실행하게 되면 내장되어 있는 톰캣서버에 의해 웹 서버가 실행되는 형태
2. 우리가 만든 프로그램을 외부의 톰캣과 같은 웹 어플리케이션 서버에 war패키지 파일을 복사해서 해당하는 서버 밑에서 운영될 수 있도록하는 방법
그 후 저장한 다음 빌드를 해보면
정상적으로 빌드가 되었다!
콘솔로 workspace의 my-maven-project 폴더에 들어가보면 첫번째 아이템폴더와 달리 여러가지 파일이 생성된 것을 볼 수 있다.