github push시 자동 빌드 자동화? 파이프라인?

LeeKyoungChang·2023년 1월 12일
0
post-thumbnail

Jenkins 원격 서버 배포(Publish Over SSH) 내용 후, 진행 했다. (연동은 완료)

현재는 github push 할 경우, 가상 서버에 있는 Jenkins에서도 push 해당 되는 빌드가 자동으로 실행된다.

 

📚 1. Jenkins 빌드 자동화 (github webhook)

🔔 자동 빌드 처리
Github Push만 처리해도 Jenkins를 통해 자동 빌드 처리하는 방법

 

✔️ Webhook이란?

  • 앱 to 앱으로 실시간 정보를 제공하는 방법이다. web callback, HTTP push API, 역방향 API 라고도 할 수 있다.
  • 전형적인 API를 통해 실시간으로 데이터를 가져오려면 자주 호출하는 땡겨오는 작업을 해야 하지만, 이 방식을 사용할 시 즉시 데이터를 얻을 수 있다.
  • 웹상의 Trigger
  • Github의 특정 브랜치에 소스가 Push 될 시, webhook으로 젠킨스에게 알려주어 빌드를 유발할 수 있다. (설정으로)

 

✔️ Webhooks 추가
Screenshot 2023-01-12 at 11 05 20 PM
Screenshot 2023-01-12 at 11 05 03 PM

  • github 해당 프로젝트
  • Payload URL : http://본인의Jenkins주소/github-webhook/
  • Payload URL만 입력, 나머지는 그대로

 

✔️ 현재 aws ec2 가상서버

Screenshot 2023-01-12 at 11 08 03 PM
  • 해당 port을 열 수 있다.

 

✔️ Github Integeration Plugin

  • Github와 Jenkins를 연결할 때, Github Integeration Plugin이 필요하다. (Jenkins 관리 -> 플러그인 관리)

  • 플러그인 관리에서 Github Integration 설치

 

✔️ Jenkins 설정

  • 신규 Item 생성하거나, 이전에 생성했던 Github과 연동되어 있는 Item 설정 페이지로 이동
  • 빌드 유발 탭 이동 -> Github hook trigger for GITScm polling 체크한다.

 

=> 모든 설정이 완료되었을 시, 설정한 Branch에 Push를 하였을 때, 자동으로 jenkins 빌드가 유발되는 것을 볼 수 있다.

 

✔️ 그런데?

Screenshot 2023-01-12 at 11 16 58 PM

이전까지 jenkins에 설정했던 작업을 하니, git push가 될 시, jenkins build가 자동으로 실행은 되고 build 생성까지 되지만 가상 서버에 있는 project에는 자동으로 적용되지 않는 상황이 발생했다.

=> 쉘.sh을 만들어서 실행하면 되지 않을까? (중간에 서버 끊기는 상황이 발생한다.)
=> 그렇다면?

....

 

 

📚 2. FreeStyle Project 쓰지 말자!

현재는 git push 할 경우, Jenkins 빌드가 실행되지만 가상 서버에는 변경 내용이 적용되지 않는다.

또한, Build 오류까지 발생...

✔️ vi 편집기에 명령어를 입력한 후, jenkins에서 빌드가 실행되었을 경우

결과

이와 같은 로그를 볼 수 있었다.
SSH: Connecting wiht ~ 이후가 실행되지 않는다.
이때는 Post build task가 아닌 Send build artifacts over SSH를 설정 후 추가했을 때 결과이다.
또한 이와 같이 실행 될 경우, 가상 서버가 엄청 느려졌다.

 

✔️ jenkins에 Gradle 추가 및 Post build task 추가(Send build ~ over SSH 삭제)
Screenshot 2023-01-12 at 11 26 28 PM
이번에는 git 관련 오류, 오류를 또한 찾아야 한다. (예상으로 git이 현재 디렉터리에 없어서 발생하는 것 같다.)

=> 아니 그래서 어떻게 할건데?? 오류를 계속 잡을꺼야? (이번 Jenkins 공부하며 수많은 오류를 본 것 같다.)

 

📚 3. Pipeline을 사용해볼까?

일주일동안 해결 하지 못하며 헤매고 있다가 아는 분께서 Pipeline을 사용하는게 좋을 것이다.
라는 말씀하셔서 현재 Pipeline에 대해 알아보고 있다.

 

✔️ 파이프라인을 사용할 시

(1) 사용자가 git push 한다.

(2) 젠킨스 서버가 pull로 받고 build 하도록 코드 작성한다. (쉘 명령어 편집기에 입력?)

(3) jar 파일 ssh로 배포

의 구조로 실행된다고 한다. (이제 이에 대해 알아볼 예정이다.)

Jenkins 복잡하구만!

 

 

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글