1. vagrant up / vagrant ssh 를 통해 가상서버 실행 및 터미널 접속

  2. 순서대로 명령어 입력

    • $ wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
      (젠킨스 저장소 키 설치)

    • sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
      (젠킨스 저장소 목록 갱신)

    • sudo apt update
      (설치목록 최신으로 갱신)

    • sudo apt install jenkins
      (젠킨스 설치)

    • sudo systemctl start jenkins
      (젠킨스 시작)
      [ sudo systemctl status jenkins 명령어로 성공적으로 시작되었는지 확인할 수 있음 (하단에 예시 이미지)]
      image.png

    • sudo ufw allow 8080
      (젠킨스는 port 8080 에서 실행되므로 해당 포트를 열어줌)

    • sudo apt update

    • sudo apt install snapd

    • sudo snap install ngrok
      (깃허브 Webhook 이벤트를 처리할 수 있도록 접근할 수 있는 Payload URL 설정을 위해 ngork 설치)

    • ngrok http 8080
      (젠킨스 url 로 외부 네트워크에서 접속할 수 있도록 연결 / Forwarding 에 있는 http://755e94a6.ngrok.io 가 외부에서 접근 가능한 url)

image.png

  1. http://your_server_ip:8080 으로 접속

image.png

  1. 빨간색 테투리로 initialAdminPassword 가 있는 곳으로 이동하여 비밀번호를 복사한 뒤 입력

  2. install suggested plugins 옵션으로 설치

image.png

  1. 설치가 완료되면 관리자 계정 생성
    image.png

  2. 설치가 완료되면 기본 설정을 위해 Jenkins 관리 클릭

image.png

  1. 플러그인 관리 클릭

image.png

  1. 설치 가능한 플러그인에서 GitHub Pull Request Builder 와 GitHub Integration Plugin 를 재시작 없이 설치하기 버튼을 클릭하여 설치
  1. 설치가 끝나고 실행중인 작업이 없으면 Jenkins 재시작 체크

image.png

  1. Jenkins 관리 -> 시스템 설정 클릭

image.png

  1. Jenkins Location 의 Jenkins URL 에 ngrok Forwarding 에 있던 url 입력

image.png

  1. github 에 접속하여 연동할 계정으로 로그인 한 후 Settings -> Developer settings -> Personal access tokens -> Generate new token 클릭

image.png

  1. Note 에 name값을 입력하고 repo 와 admin:repo_hook 만 체크한 후 Generate token 클릭
    image.png
  1. 생성된 토큰 복사

image.png

  1. 다시 Jenkins 설정페이지에서 GitHub Server 정보에 name 을 입력하고 Manage hooks 체크 , 그 후 Credentials Add 버튼을 클릭

image.png

  1. Kind 를 Secret text 로 설정하고 Secret에 복사한 토큰을 입력 , ID 는 식별값이므로 구분할 값을 입력한 후 ADD 버튼 클릭

image.png

  1. Credentials 설정에 방금 추가한 값을 설정하고 우측에 있는 Test connection 버튼을 클릭하여 연결 확인

image.png

  1. GitHub Pull Request Builder 에서 Jenkins URL 에 ngrok Forwarding URL 을 입력해주고 위에서 Credentials 설정해 준 것과 동일하게 동일하게 설정해준 뒤 우측에 Test connection 을 클릭한 뒤 Test basic connection to GitHub 를 체크하여 Connect to Api 를 실행하여 연결을 확인한 뒤 저장

image.png

  1. 메인에서 새작업 추가 또는 새로운 Item 추가 클릭 후 name 을 입력 -> Freestyle project 선택 -> OK

image.png

  1. GitHub project 를 클릭 후 github Project url을 입력해준 뒤 우측 하단에 고급버튼을 클릭
    image.png

  2. 사용자 빌드 경로 사용을 클릭하여 job의 workspace 위치 설정
    image.png

  3. 소스코드 관리에서 git 선택 , Repository URL 에 git repository url 을 넣어주고 Branch Specifier 에 적용할 브랜치 정보를 입력한 후 Credentials Add 버튼 클릭

image.png

  1. Kind 에 Username with password 를 선택하고 Username 에 git 로그인 id , Password 에 git password 를 입력하고 ID 에 식별값을 넣고 Add 버튼 클릭하여 추가한 뒤 Credentials 설정

image.png

25-1. 깃에 올라간 파일이 변하면 실행하는 JOB

  • 빌드 유발에 GitHub hook trigger for GitScm polling 선택
    image.png
  • Build 에서 Execute shell 을 선택하고 표시할 코맨트 입력 후 저장
    image.png

25-2. 깃에서 Pull Request를 할 때 실행하는 JOB

  • 빌드 유발에 GitHub Pull Reqeust Builder를 선택하고 Adminlist 와 White list 에 깃 유저 name 을 입력하고 Allow members of whitelisted organizations as admins 와 Build every pull request automatically without asking (Dangerous!) 를 체크해 준 뒤 Whitelist Target Branches:에 Pull Request의 대상이 되는 Branch 를 입력 (ex dev <- dev_child 로 Pull Request 면 dev)

image.png

  • Build 에서 Execute shell 을 선택하고 표시할 코맨트 입력 후 저장
    image.png
  1. github 프로젝트 settings -> Webhooks 페이지로 이동하여 Add webhook 클릭
    image.png

27-1. 깃에 올라간 파일이 변하면 실행하는 JOB 을 위한 Webhooks 설정

  • ngrok Forwarding URL에 /github-webhook/ 을 붙여준 뒤 content type 을 application/json 으로 설정 후 Add webhook

image.png

27-2. 깃에 Pull Request를 할 때 실행하는 JOB 을 위한 Webhooks 설정

  • ngrok Forwarding URL에 /ghprbhook/ 을 붙여준 뒤 content type 을 application/json 으로 설정 후 Which events would you like to trigger this webhook? 를 Let me select individual events. 선택 , Pull requests 만 체크하고 Add webhook

image.png

  1. Jenkins 메인으로 이동하여 JOB의 최초 빌드를 진행해주면 설정 끝. (workspace 로 지정한 폴더를 설정한 git branch와 동기화 시켜줌으로 git에 없는 파일들은 삭제되니 주의)
    image.png