젠킨스와 도커를 이용하여 배포해보기

[목표]

  • 젠킨스와 도커를 이용한 빌드/테스트/배포자동화
  • 무중단배포

젠킨스를 이용하여 자동 빌드해보기

[준비물]

  • java 11
    jenkins가 기본적으로 java 8과 11만 지원된다는 사실을 알았다. 하지만 19-04-16부터 java 8과 관련된 업데이트이후로 ppa:webupd8team/java에서 installer를 제공되지 않는다고 들었다. 그래서 그냥 11버전으로 해보기로 했다.
  • docker-ce
    자바 11버전을 사용하지 않았더라면 그냥 젠킨스를 다운받아서 실행해도 상관없다. 하지만 11버전을 사용해야 한다면 젠킨스를 사용하기 위해서는 docker가 필수다. 뒤에 나올테지만 11버전은 젠킨스를 그냥 실행할 수 없고 docker를 이용해야 실행가능하다.

자바 설치

  1. ppa 추가

    sudo add-apt-repository ppa:linuxuprising/java
    
  2. apt update

    sudo apt-get update
    
  3. install

    sudo apt-get install oracle-java11-installer
    
  4. 라이센스 동의

  5. 설치 확인

    java -version
    

도커 설치

도커 설치 링크

젠킨스 실행하기

  1. 젠킨스 이미지 다운

    sudo docker pull jenkins/jenkins:2.164-jdk11
    
  2. 젠킨스 실행 스크립트 만들기

    jenkins_start.sh

    sudo docker run -d -p 8080:8080 -v [로컬 절대 경로]:/var/jenkins_home jenkins/jenkins:2.164-jdk11
    

    p태그 : 컨테이너의 8080포트와 로컬 8080포트 바인딩

    v태그 : 컨테이너의 /var/jenkins_home의 데이터를 로컬 지정 경로와 마운트

    d태그 : detach mode

  3. 실행 권한 주기

    sudo chmod +x ./jenkins_start.sh
    
  4. 젠킨스 실행

    ./jenkins_start.sh
    
  5. 젠킨스 잠금 모드 풀기

    1) 컨테이너 이름 확인하기

    docker ps
    

    2) 컨테이너 bash가져오기

    docker exec -it [컨테이너이름] /bin/bash
    

    3) /var/jenkins_home/secrets/initialAdminPassword 비밀번호

    cat /var/jenkins_home/secrets/initialAdminPassword
    

    4) 브라우저에서 [ip]:8080 접속하면 Unlock Jenkins라는 페이지가 나올거임 비밀번호 입력창에 위의 단계에서 나온 비밀번호를 입력

  6. Install suggested plugins 클릭

  7. user 생성

  8. [option] bitbucket을 이용하는 사람이라면 왼쪽 탭의 jenkins관리 - 플러그인 관리 - bitbucket plugin 설치

작업 생성

  1. 홈에서 새로운 Item 클릭

  2. 이름 입력 후 아래의 Freestyle project 클릭 후 OK

  3. General탭에 자신의 깃허브 프로젝트 URL 입력

  4. 소스 코드 관리 탭에 Git을 선택후 레포지토리 URL 및 크레덴셜 입력

  5. 빌드 유발 탭에 Bitbucket이라면 Build when a change is pushed to BitBucket, Github라면 Github hook trigger for GITScm polling 선택

  6. Build탭에서 빌드시 원하는 작업을 선택 나의 경우는 Execute shell 선택후 빌드도구가 그레이들이기 때문에 다음과 같이 작성

  7. Apply 후 저장

빌드 해보기

  1. 생성한 프로젝트를 클릭 후 왼쪽 탭에서 Build Now 클릭

  2. 아래의 Build History에서 #1이 빨간색으로 되어있다면 빌드 실패한것임

  3. #1클릭 후 Console Output으로 들어가 내용 확인

마치며

  • 오늘은 간단하게 젠킨스를 통해 원격레포지토리 master브렌치에 푸시되었을 때 프로젝트를 가져와서 빌드하는 것을 해보았다. 다음 포스트에서는 빌드가 성공했을 때 외부에서 실행중인 서비스를 중지시키고 빌드가 성공한 프로젝트를 실행하는 것을 목표로 한다.