2024.07.08

김무영·2024년 7월 8일

Jenkins

  • SUN사에서 개발된 Hudson프로젝트에서 파생된 프로젝트.
  • CI(Continuous Integration)/CD(Continuous Delivery)툴(오픈소스 자동화 서버)
  • 개발 프로세스를 자동화하여 빌드 > 테스트 > 배포 작업을 자동으로 수행
  • 빌드 > 테스트 > 배포 작업 : Pipeline
  • 자바로 구현된 프로그램 (JDK11부터 동작)

주요기능

  1. 지속적인 통합
    • 개발자가 소스코드를 repository에 병합할때마다 자동으로 빌드하고 테스트 실행
  2. 지속적인 배포
    • 빌드 > 테스트를 통과한 후 자동으로 다양한 환경에 배포를 수행.
  3. 파이프라인 지원
  4. 웹 인터페이스 지원
    • 웹 기반 인터페이스를 제공하여 빌드시 로그를 손쉽게 모니터링 할 수 있다.
  • Jenkins는 다양한 플러그인을 지원하기 때문에 파이프라인 구성이 복잡해질 수 있고, 버전간의 호환성, 보안사항등을 고려해야 한다.

Master와 Slave 구성

  • Master : Controller라고 불리며, Jenkins slave를 관리하고 작업 스케줄링과 모니터링을 수행.
  • slave
    • agent라고 불리며 파이프라인에 정의된 작업을 수행.
    • 다양한 환경에서 작동하며 작업을 분산시켜 부하를 감소시키는 역할.

  • 설정파일 : C:\ProgramData\Jenkins\jenkins.xml
  • 경로 변경가능

Jenkins와 Github 연결

  1. Github repository에서 token발급
  2. Github Repository에 Webhook설정
  3. Jenkins에 plugin 설치 (Webhook Trigger, GitHub Integration, Github API Plugin)
  4. Jenkins Credentials 생성
  5. Jenkins Pipeline 설정
  6. Jenkinsfile 작성

ngrop

  • 외부 접속 불가능한 ip를 domain으로 제공하여 연결 가능하도록 만들어준다.
  1. ngrok.io 접속 후 Get ngrok 탭 클릭

  2. Windows 클릭 후 ZIP파일 다운로드

  3. ngrok config add-authtoken 토큰값 을 cmd 관리자모드 실행 후
    ngrok.exe 가 설치된 폴더로 이동 후
    ngrok config add-authtoken 키값 입력

  4. ngrok.exe실행 후
    ngrok http http://localhost:8082 입력 (8080은 Tomcat과 충돌우려)

  5. Forwarding에 나온 주소를 인터넷에서 입력 -> http://localhost:8082와 동일한 결과


github token 생성


  • 필수 : repo, admin:org, admin:repo_hook
  • 나머지 선택 : workflow, notifications, user

repository 생성 후 webhook 설정

  • Repository >


  • Payload URL : 외부 접속이 가능한 Jenkins의 URL

  • 젠킨스 에서 플러그인 설치

  • Generic Webhook Trigger Plugin

    • 웹 훅 이벤트를 감지하여 빌드를 트리거 할 때 사용.
    • 커밋 , 풀리퀘스트 등 특정 이벤트가 발생했을 때 빌드 작업 수행.
  • GitHub API Plugin

  • GitHub Branch Source Plugin

  • GitHub Integration Plugin

    • 젠킨스와 GitHub에 통합을 지원하는 플러그인
    • GitHub에 push 될때마다 자동으로 젠킨스의 빌드를 시작한다.
    • CI/CD파이프라인을 실행.

Tools (git.exe를 선택)

Jenkins Credentials 생성

  • global 클릭
  • add Credential 클릭

  • Username : Github_id
  • Password : Webhook이 설정된 token
  • ID : 아이디

Jenkins pipeline 설정





일정시간마다 자동 빌드 설정

  • configure > 소스코드 관리 > 빌드 유발 > Poll SCM
  • Schedule
    • Cron 표현식 (*1*2*3*4*5 )
    • *1 : 시간 H/5 : 5분 , H : 1시간
    • *2 : 일
    • *3 : 월
    • *4 : 년
    • *5 : 요일
  • H/5 * * * 1-5 : 5분에 한번씩 월요일에서 금요일까지 진행

Pipeline 구성

jenkinsfile 작성법

pipeline {// 전체 파이프라인 정의
      agent any // 어떤 agent에서나 실행될 수 있다.

      stages { //여러 Stage를 관리하기 위해서 사용하는 블록
          stage('Hello') { // 하나의 작업 stage('식별될 수 있는 이름');
              steps { // 하는일
                  echo 'Hello World'
                  sh 리눅스 명령어
                  bat DOS 명령어
              }
          }
      }
  }

  • git branch : 깃 레퍼지토리 브랜치명
  • credentialsId : Jenkins Credentials ID
  • url : 깃 레퍼지토리 경로

0개의 댓글