본문 바로가기
AyoProject/DevOps

[DevOps] 6. jenkins connect with GitHub (2)

by 청양호박이 2022. 4. 7.

이제 jenkins까지 기본설치를 완료하고 접속이 되었기 때문에, 이제 GitHub와 연동하여 자동 빌드 및 배포환경을 구성해 보도록 하겠습니다. 현재 자신이 개발하고 있는 Project type도 꼭 잘 확인하시기 바랍니다. 저는 우선 SpringBoot에 Maven build를 사용합니다.

따라서 jenkins에서도 Maven Project Build가 가능한 Plugin이 있는지 확인하고 없다면 설치를 해야 합니다.

 


1. Maven Integration Plugin


우선 jenkins에 접속합니다. 좌측메뉴를 보면 [Jenkins 관리] 메뉴가 있습니다. 그것을 선택하고 나타나는 오른쪽 화면에서 [플러그인 관리]를 클릭합니다. 

그러면 Plugin Manager로 들어가게 됩니다. 보시면 4가지 메뉴 Tab이 있습니다. 업데이트된 플러그인 목록/ 설치가능/ 설치된 플러그인 목록/ 고급... 그 중에서 설치가능 Tab을 선택하고, search에서 maven을 입력합니다. 그러면 하단에 [Maven Integration] 이 있는데 이를 선택하고 설치합니다. 이때 Install without restart 를 선택하면 되겠습니다. 

이제 아래와 같이 설치되는 과정을 쭉 보여줍니다. 


 

 


 

2. GitHub 연동 test


이제 GitHub에 등록된 repository를 가지고 jenkins를 통해서 빌드를 해보도록 하겠습니다. jenkins 메인에서 [새로운 Item]을 선택합니다. 

선택하면 Enter an item name을 입력하고, Maven project를 선택하고 OK 해줍니다.

그럼 다음부터 엄청난 설정의 향연으로 들어가게 됩니다. 하나하나 차근차근 살펴보도록 하겠습니다.

[General]
일반적인 설정을 하는 부분으로 크게 수정없이 설명만 간단하게 넣고 넘어가겠습니다.

[소스 코드 관리]
현재 None으로 되어있는 부분을 우리는 GitHub repository를 통해서 진행하기 때문에 Git을 선택해 줍니다. 그럼 바로Repository URL을 입력하게 됩니다. 이전에 만들었던 주소를 복사하여 입력해 줍니다. 그리고 Credentials에서 Add를 선택해 줍니다.

입력해야 할 부분은 Username / Password입니다. 나머지는 기본세팅으로 진행합니다. Kind에는 로그인방식을 선택할 수 있는데 이번에는 이 방식으로 진행하겠습니다. 그리고 하단에 ID와 Description은 신규로 생성되는 Credentials의 ID와 설명입니다.

이제 다시 Credentials를 선택하는 listbox를 누르면 방금 생성한 item이 보입니다.

이제 Branches to build를 확인합니다. 해당 repository에서 build할 Branch를 기재하는 부분인데, 본인의 프로젝트 설정에 맞게 변경합니다. 저는 master를 main branch로 설정했기 때문에 변경없이 넘어갑니다. 혹시 다른 string으로 하신분은 */master를 */main등으로 변경해주시면 됩니다.

[빌드 유발 & 빌드 환경]

다음은 빌드 유발과 빌드 환경 부분입니다. 선택해야 할 항목은 여러가지 있지만 default setting으로 진행하겠습니다. 하지만... 궁금하니 빌드 유발에 대해서 알아보면,

Build whenever a SNAPSHOT dependency is built? - Maven Project를 선택한 item에서는 기본으로 체크가 되어있습니다. POM에 설정되어 있는 모든 dependency 프로젝트들에 대해서도 같이 빌드를 진행합니다.

빌드를 원격으로 유발 (예: 스크립트 사용)? 외부에서 URL을 통해 빌드를 할 수 있도록 설정합니다.
Build after other projects are built? 다른프로젝트가 먼저 빌드된 후 바로 이어서 빌드하도록 설정합니다.
Build periodically? 주기적인 빌드를 하도록 설정합니다. (Schedule)
GitHub hook trigger for GITScm polling? GitHub을 주기적으로 확인하여 변경이 발생하면 빌드를 수행하도록 설정합니다.
Poll SCM? 형상관리 서버를 주기적으로 확인하여 변경이 발생하면 빌드를 수행하도록 설정합니다.

이제 아래를 보니 Build 에 빨간색이 있는게 보입니다. 아주 느낌이 좋지않지만 확인해 봅니다.

 



 

추가 : jenkins에 Maven 설치하기


Maven Version을 선택해야 하는데 아래와 같이 Error가 발생합니다. 이유는 jenkins에 설치된 Maven이 없다고 알려주는데요. 우리는 docker에서 jenkins를 실행했기 때문에, 당황하지 않고 링크가 걸려있는 tool configuration을 선택하여 해결해 보겠습니다. 

Jenkins needs to know where your Maven is installed. Please do so from the tool configuration.

tool configuration을 누르면 Global Tool Configuration에 들어가는데 여기서 하단에 Maven을 확인하고, Maven installations에서 Add Maven을 선택해 줍니다. 

여기서 Name은 알아서 입력하고, Install automatically를 체크하고 Install from Apache Version은 가장 최신으로 선택합니다. 그리고 Save 해줍니다.

이렇게 설정해도 계속 Error상황인 것처럼 보입니다. 따라서 item을 save해서 닫아주고 다시 Dashboard에서 해당 item name에서 [구성]을 선택해서 다시 들어가보면 해당 Error자체가 사라졌습니다. 

이제 마지막으로 Build에서 Root POM과 Goals and options를 입력해주면 됩니다. 

이제 Build가 되는지 동작시켜 보겠습니다. Dashboard에서 해당 item name 오른쪽 끝에 녹색화살표 아이콘을 클릭하면 빌드가 시작됩니다. 

21:27:19 [INFO] Replacing main artifact with repackaged archive
21:27:20 [INFO] ------------------------------------------------------------------------
21:27:20 [INFO] BUILD SUCCESS
21:27:20 [INFO] ------------------------------------------------------------------------
21:27:20 [INFO] Total time:  7.867 s
21:27:20 [INFO] Finished at: 2022-03-30T12:27:20Z
21:27:20 [INFO] ------------------------------------------------------------------------
21:27:20 Waiting for Jenkins to finish collecting data
21:27:20 [JENKINS] Archiving /var/jenkins_home/workspace/ayotera_docker_test/pom.xml to com.example/AyoteraLabDockerTest/0.0.1-SNAPSHOT/AyoteraLabDockerTest-0.0.1-SNAPSHOT.pom
21:27:20 [JENKINS] Archiving /var/jenkins_home/workspace/ayotera_docker_test/target/AyoteraLabDockerTest-0.0.1-SNAPSHOT.jar to com.example/AyoteraLabDockerTest/0.0.1-SNAPSHOT/AyoteraLabDockerTest-0.0.1-SNAPSHOT.jar
21:27:20 channel stopped
21:27:20 Finished: SUCCESS

console output에서 확인하면 정상적으로 빌드가 성공하였고 Dashboard에서도 아래와 같이 잘 됬음을 확인할 수 있습니다. 

최초빌드에는 많은 시간이 소요되나... 이후 빌드는 빨리되니 너무 걱정하지 않으셔도 됩니다. 이제 실제 jenkins server로 들어가서 해당파일이 정상적으로 생겼는지 확인해 보겠습니다. 해당 파일은 jenkins doker를 띄울때 mapping한  jenkins_home에서 /workspace/ayotera_docker_test/target/ 으로 들어가면 jar가 생성되어 있습니다.

Full Path : /var/jenkins_home/workspace/ayotera_docker_test/target/

이제 해당 jar를 가지고 docker build 후 실행해 보면 localhost:8080으로 정상적인 application이 동작함을 확인할 수 있습니다. 이부분은 기존에 기재한 내용과 동일하며, 현재 구성에서 자동화 할 수 있는 방법을 다음시간에 고려해 보도록 하겠습니다.

 

- Ayotera Lab -

댓글