GitHub은 협업과 소스 코드 관리를 위한 플랫폼이지만,
자동화된 빌드 및 배포 프로세스를 구축하기 위해서는 Jenkins 와 같은 CI/CD 도구의 도움이 필요합니다
- Github 설정
Github > 우측 상단 유저 아이콘 → Settings → Developer settings → Personal access tokens 메뉴로 이동



모두 적용후 "Generate token" 버튼 클릭
**** 토큰은 생성후 바로 복사해서 저장해 두어야 한다!!! 새로고침 하자마자 사라진다
- Jenkins 설정 (Github연동)
** Jenkins Credentials
Jenkins에서 사용되는 인증 정보를 안전하게 관리하기 위한 메커니즘이며, Credentials를 통해 사용되는 비밀번호, API토큰, SSH 키 등의 정보를 안전하게 저장하고 관리한다
- Jenkins 관리 → System


Password : 발급 받은 GitHub token
ID : Credentials 이름 (구분할 수 있는 텍스트)
Description : Optional(선택사항)
- Jenkins 관리 → System

![]() |
![]() |
Name: 자유롭게 적어됨
API URL : 기본값 그대로
Credentials : 위에서 생성한 Credentials 선택
- Github 연동
![]() |
![]() |
![]() |
- Jenkins홈 → 새로운 Item → Freestyle Project 생성
만들어진 프로젝트의 구성 탭 → 소스코드관리
Repository URL : GitHub Repository 경로.git
Credentials : 생성한 Credentials ( 만약 보이지 않는다면 다시 생성)

Username : GitHub 아이디
Password : 발급 받은 GitHub token
ID : Credentials 이름
Description : Optional(선택사항)

빌드유발 → GitHub hook trigger for GITScm polling 선택
- Github 설정 (Github연동)
** Github Webhook : Remote Server에 Push, Commit 등의 이벤트가 발생하면 Jenkins 같은 CI Server에 해당 이벤트를 전달하는 기능입니다

연동할 리포지토리 → Settings → Webhooks → add Webhooks
payload URL : 젠킨스주소 + /github-webhook/
Content type : application/json
** 여기서 젠킨스 주소를 localhost:9090 이런식으로 나타내면 에러가 뜬다

webhook를 보내는 주체가 Github 즉, Github에 변경 이력이 일어나면 Github가 Jenkins에게 알린다는 것이다
→ GitHub은 Jenkins 서버에 접근할 수 있어야 한다 → Jenkins 서버의 공용 IP 주소나 도메인 이름을 알아야 한다
→ 로컬에서 실행되는 Jenkins 서버의 localhost는 GitHub이 직접 접근할 수 없기 때문에, GitHub과의 통신을 위해서는 Jenkins 서버가 공용 네트워크에서 접근 가능해야 합니다.
해결방법
→ ngrok 사용하여 로컬 Jenkins 서버를 외부에서 접근 가능한 URL을 제공받음
1.ngrok 가입하기
2.나는 Ubuntu로 설정을 해주었다(순서대로 입력)
3.토큰확인후 입력
4.마지막 포트번호는 젠킨스 포트번호 입력후 -> ngrok가 알려준 URL로 등록하면 된다

- 결과

일단 빌드까지는 완료가 된 것 같다.




