Jenkins github 연동(1/2)
https://github.com/skyer9/TestCiCd 는 테스트 후 퍼블릭으로 변경했습니다.
github 의 private repo 에 소스가 push 되면, 젠킨스가 소스를 가져와 빌드 및 배포하는 과정을 자동화 합니다.
GitHub private repo 에서 소스 가져오기
젠킨스 서버에 Git 이 이미 설치되어 있는 것으로 가정합니다.
GitHub Integration 플러그인 설치
젠킨스 메인화면
> Jenkins 관리
> 플러그인 관리
에서, GitHub Integration
을 설치합니다.
의존성이 있는 플러그인들이 자동으로 동시에 설치됩니다.
Git 설정
젠킨스 메인화면
> Jenkins 관리
> Global Tool Configuration
에서, Git 경로를 지정해 줍니다.
Git 용 키 생성
Git 연동을 위한 키를 생성합니다.
sudo su -s /bin/bash jenkins
whoami
mkdir /var/lib/jenkins/.ssh
cd /var/lib/jenkins/.ssh
ssh-keygen -t rsa -b 4096 -C "skyer9@gmail.com" -f /var/lib/jenkins/.ssh/github
생성된 공개키를 확인 후 github 프로젝트에 등록해 줍니다.
cat /var/lib/jenkins/.ssh/github.pub
젠킨스 Credential 생성하기
cat /var/lib/jenkins/.ssh/github
위에 출력되는 내용을 복사합니다.
젠킨스 메인화면
> Credentials
> System
> Global credentials
에서, Add Credentials
을 선택합니다.
위와 같이 입력하여 Credential 을 생성합니다.
테스트 프로젝트 생성하기
젠킨스 메인화면에서, New Item
을 선택합니다.
Freestyle project 를 선택하고 아이템명을 입력합니다.
소스 코드 관리
에서 Git
을 선택합니다.
GitHub Repository 의 Clone with SSH 항목을 복사해서 Repositoy URL 에 입력합니다.
Repository 가 Private 인 경우, 아래와 같이 오류 메시지가 표시됩니다.
위에서 등록한 Credential 을 선택해 줍니다.
빌드를 해보면 소스 가져오기가 정상적으로 작동하는 것을 확인할 수 있습니다.
GitHub Webhook 설정하기
Webhook 은 웹상의 Trigger 같은 존재입니다. GitHub 의 지정한 브랜치에 소스가 push 되면 webhook 으로 젠킨스에게 알려주어 빌드를 유발하도록 설정합니다.
github webhook 설정
Payload URL
은 http://<젠킨스 서버 아이피>:8080/github-webhook/
로 합니다.
위에서는 SSL 을 설정하였기에 https 로 접속하고 있습니다.
aws ec2 보안그룹 설정
아마존 EC2 인스턴스에 젠킨스가 설치되어 있다면 아래 아이피를 보안그룹에 추가해야 합니다.
{
......
hooks: [
"192.30.252.0/22",
"185.199.108.0/22",
"140.82.112.0/20"
],
......
}
젠킨스 webhook 설정
젠킨스 프로젝트 구성 탭에서 웹훅을 설정해 줍니다.
GitHub 푸시하기
깃허브에 소스를 push 하면 젠킨스가 작동하는 것을 확인할 수 있습니다.