-
vagrant up / vagrant ssh 를 통해 가상서버 실행 및 터미널 접속
-
순서대로 명령어 입력
-
$ 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 명령어로 성공적으로 시작되었는지 확인할 수 있음 (하단에 예시 이미지)]
-
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)
- http://your_server_ip:8080 으로 접속
- 빨간색 테투리로 initialAdminPassword 가 있는 곳으로 이동하여 비밀번호를 복사한 뒤 입력
- install suggested plugins 옵션으로 설치
-
설치가 완료되면 관리자 계정 생성
-
설치가 완료되면 기본 설정을 위해 Jenkins 관리 클릭
- 플러그인 관리 클릭
- 설치 가능한 플러그인에서 GitHub Pull Request Builder 와 GitHub Integration Plugin 를 재시작 없이 설치하기 버튼을 클릭하여 설치
- 설치가 끝나고 실행중인 작업이 없으면 Jenkins 재시작 체크
- Jenkins 관리 -> 시스템 설정 클릭
- Jenkins Location 의 Jenkins URL 에 ngrok Forwarding 에 있던 url 입력
- github 에 접속하여 연동할 계정으로 로그인 한 후 Settings -> Developer settings -> Personal access tokens -> Generate new token 클릭
- Note 에 name값을 입력하고 repo 와 admin:repo_hook 만 체크한 후 Generate token 클릭
- 생성된 토큰 복사
- 다시 Jenkins 설정페이지에서 GitHub Server 정보에 name 을 입력하고 Manage hooks 체크 , 그 후 Credentials Add 버튼을 클릭
- Kind 를 Secret text 로 설정하고 Secret에 복사한 토큰을 입력 , ID 는 식별값이므로 구분할 값을 입력한 후 ADD 버튼 클릭
- Credentials 설정에 방금 추가한 값을 설정하고 우측에 있는 Test connection 버튼을 클릭하여 연결 확인
- GitHub Pull Request Builder 에서 Jenkins URL 에 ngrok Forwarding URL 을 입력해주고 위에서 Credentials 설정해 준 것과 동일하게 동일하게 설정해준 뒤 우측에 Test connection 을 클릭한 뒤 Test basic connection to GitHub 를 체크하여 Connect to Api 를 실행하여 연결을 확인한 뒤 저장
- 메인에서 새작업 추가 또는 새로운 Item 추가 클릭 후 name 을 입력 -> Freestyle project 선택 -> OK
-
GitHub project 를 클릭 후 github Project url을 입력해준 뒤 우측 하단에 고급버튼을 클릭
-
사용자 빌드 경로 사용을 클릭하여 job의 workspace 위치 설정
-
소스코드 관리에서 git 선택 , Repository URL 에 git repository url 을 넣어주고 Branch Specifier 에 적용할 브랜치 정보를 입력한 후 Credentials Add 버튼 클릭
- Kind 에 Username with password 를 선택하고 Username 에 git 로그인 id , Password 에 git password 를 입력하고 ID 에 식별값을 넣고 Add 버튼 클릭하여 추가한 뒤 Credentials 설정
25-1. 깃에 올라간 파일이 변하면 실행하는 JOB
- 빌드 유발에 GitHub hook trigger for GitScm polling 선택
- Build 에서 Execute shell 을 선택하고 표시할 코맨트 입력 후 저장
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)
- Build 에서 Execute shell 을 선택하고 표시할 코맨트 입력 후 저장
- github 프로젝트 settings -> Webhooks 페이지로 이동하여 Add webhook 클릭
27-1. 깃에 올라간 파일이 변하면 실행하는 JOB 을 위한 Webhooks 설정
- ngrok Forwarding URL에 /github-webhook/ 을 붙여준 뒤 content type 을 application/json 으로 설정 후 Add webhook
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
- Jenkins 메인으로 이동하여 JOB의 최초 빌드를 진행해주면 설정 끝. (workspace 로 지정한 폴더를 설정한 git branch와 동기화 시켜줌으로 git에 없는 파일들은 삭제되니 주의)