플레이데이터 풀스택 백엔드 9기 18주차 주간회고 및 학습기록 (열여덟번째 기록)
Jenkins를 로컬 환경에서 실행하기 위해 필요한 설정들을 정리하고자 한다.
[GitHub Push]
↓
[Jenkins]
- 백엔드 빌드 (.jar or Docker)
- 프론트 빌드 (정적 파일)
- Docker 이미지 빌드 + Push
- k8s manifest 준비
↓
[GitOps: ArgoCD]
- 이미지 버전 감지 후 자동 배포
- K8s 클러스터에 반영
4차 프로젝트였기 때문에 위와 같은 흐름만 진행해봤다. 최종프로젝트 때는 모니터링까지 다 해보고자 한다.
1. Jenkins plugin 설정
로컬에서 Jenkins에 접속하면 (난 18080 포트로 지정하였다) 일단 플러그인을 깔아준다.
기본 CI/CD용
| Git plugin | GitHub 리포지토리 연동 (필수) |
| Pipeline | Jenkinsfile을 통한 파이프라인 스크립트 실행 |
| NodeJS plugin | 프론트 빌드 시 npm install, npm run build에 필요 |
| Gradle Plugin 또는 Maven Integration | 백엔드 빌드 시 사용 |
| Docker Pipeline | Jenkins Pipeline에서 Docker 빌드/푸시 작업 가능 |
| Blue Ocean (선택) | 파이프라인 UI를 더 보기 좋게 만듦 |
Docker 관련
| Docker plugin | Docker 서버와 Jenkins 연결 가능 (Docker.sock) |
| Docker Pipeline | Jenkins Pipeline 내에서 docker.build(), withDockerRegistry() 사용 가능 |
연동/인증용
| GitHub plugin | GitHub OAuth, webhook 설정 등에 필요 |
| Credentials Binding Plugin | DockerHub/GitHub Token 등의 시크릿 변수 등록 후 사용할 수 있음 |
| Environment Injector Plugin | 환경변수 주입 (선택) |
기타
| Locale | Jenkins UI의 언어를 강제로 영어 또는 원하는 언어로 고정시켜주는 플러그인 |
| Pipeline: Stage View | Jenkinsfile을 기반으로 한 파이프라인의 각 단계(Stage) 시각화를 해주는 플러그인 |
| Publish Over SSH | Jenkins가 다른 서버에 SSH로 파일 전송/명령 실행할 수 있게 해주는 플러그인 |
2. Credentials 설정
| ID | 용도 | |
| ssh-jenkins-github--key | GitHub SSH 키 (레포지토리 Clone 시 사용) | GitHub 연동 시 필요 |
| DOCKERHUB_PASSWORD | DockerHub 로그인 (Docker Push 시 필요) | Docker 빌드/푸시 시 필요 |
| discord | Discord Webhook 토큰 등 (알림용) | 선택 사항 (알림 쓸 때만) |
| github | GitHub Personal Access Token (PAT) | GitHub API 또는 HTTPS Clone 시 필요 |
| jwt-secret | jwt-secret-key | jwt를 이용한 로그인 구현 시 필요 |
2.1. ssh-jenkins-github--key
먼저, SSH 키쌍을 생성한다. 다음과 같은 명령어를 cmd/터미널에 입력하면 키가 생성된다. 생성한 후, .ssh 폴더로 들어가면 (cmd/터미널에 경로가 나온다.) 여기서 jenkins@yourdomain.com은 누가 생성했는지 식별하기 위해 쓰는 주석이다.
이 명령어 뒤에 -f id_rsa_jenkins_github를 쓰면 id_rsa_jenkins_github이라는 이름의 파일 안에 키가 생성된다.
ssh-keygen -t rsa -b 4096 -C "jenkins@yourdomain.com"
or
ssh-keygen -t rsa -b 4096 -C "jenkins@yourdomain.com" -f id_rsa_jenkins_github
- .ssh/id_rsa: Private Key (Jenkins에 등록할 키)
- .ssh/id_rsa.pub: Public Key (GitHub에 등록할 키)
이후 Gitthub에 Public Key를 등록한다.
- GitHub > 오른쪽 상단 프로필 > Settings
- 왼쪽 메뉴 > SSH and GPG keys
- New SSH key 클릭
- Title: Jenkins SSH Key / authentication key
- Key: cat ~/.ssh/id_rsa.pub 한 결과 붙여넣기
(여기서 절대 그냥 id_rsa 파일에 있는 개인키를 등록하면 안된다) - Save
Jenkins에는 Private Key를 등록한다.
- Jenkins 대시보드 → Manage Jenkins → Credentials
- (혹은 Manage Jenkins → Security → Credentials)
- (global) → Add Credentials 클릭
- 입력 항목
항목 값 Kind SSH Username with private key Username git (GitHub는 SSH 접속 시 git@github.com 사용) Private Key cat ~/.ssh/id_rsa 해서 붙여넣기 ID ssh-jenkins-github-key (식별자, 나중에 Pipeline에서 사용 가능) Description Jenkins SSH key for GitHub access
2.2. DOCKERHUB_PASSWORD
- Jenkins 웹 UI 접속
- → http://<EC2 퍼블릭 IP>:18080 등
- 좌측 메뉴에서
- [Manage Jenkins] → [Credentials] 클릭
- (global) → [Add Credentials]
- 입력 항목
항목 값 Kind Username with password Username DockerHub UserName Secret DockerHub 비밀번호 (your_password) ID DOCKERHUB_PASSWORD Description (선택) DockerHub password credential
2.3. GitHub_PAT
먼저 Githun PAT을 발급한다. (PAT은 Jenkins가 GitHub API로 웹훅 설정, 트리거 등 호출할 때 필요하다)
- GitHub 접속 → 우측 상단 프로필 → Settings
- 좌측 메뉴에서 → Developer Settings → Personal access tokens → Tokens (classic)
- [Generate new token (classic)] 클릭
- 다음 권한 부여:
- repo (레포 접근/Clone용)
- admin:repo_hook (웹훅 설정용, 선택)
- workflow (GitHub Actions 필요 시)
- 생성 후 복사해 두고 Jenkins에 붙여넣기
이제 Jenkins에 등록한다.
- Jenkins 웹 UI 접속
- → Manage Jenkins → Credentials → (global) → Add Credentials
- 입력 항목
항목 값 Kind Username with password Username Github 계정 아이디 Password GitHub에서 발급받은 PAT (ghp_xxxxxxxxxxxxxxxxxxxxxxxxx) ID GITHUB_PAT (파이프라인에서 쓰기 쉽게 ID 지정) Description GitHub Personal Access Token
2.4. jwt-secret
- Jenkins 웹 UI 접속→ Manage Jenkins → Credentials → (global) → Add Credentials
- 입력 항목
필드명 입력값 예시 설명항목 값 Kind Secret text Secret 실제 JWT 서명용 시크릿 문자열 ID jwt-secret Description (선택사항, 설명용) JWT Secret for Oliveyoung
3. Webhook 및 ngrok설정
3.1. ngrok 설치 및 설정
ngrok은 로컬 서버를 외부에서 접근 가능하게 만들어주는 터널링 도구이다. Jenkins 웹훅, API 테스트, 프론트엔드 개발 중 외부에서 백엔드 호출 같은 경우에 굉장히 유용하다.
- 필요한 이유
상황 문제 ngrok의 역할 모바일 디바이스에서 내 백엔드 테스트 모바일은 localhost 인식 못함 외부 HTTPS 주소로 접속 가능 친구나 팀원에게 내 로컬 서버 보여주고 싶음 상대방은 내 내부 IP 몰라 공유 가능한 주소 생성 API 서버를 외부 도구(Postman, Slack 등)에서 호출하고 싶음 외부는 로컬 접근 불가 안전한 HTTPS로 연결 GitHub 웹훅 → Jenkins GitHub는 내 localhost로 접근 불가
- grok 압축파일 다운받아 압축 풀기 (https://ngrok.com/download)
- ngrok 계정을 만들어서 왼쪽 네비게이션 바에서 Yout Authtoken을 누른 후 토큰 복사
- cmd/터미널에 ngrok config add-authtoken $YOUR_AUTHTOKEN를 입력한다.
- 아래 명령어로 외부에서 내 PC의 18080포트로 접속할 수 있게 터널링하는 명령어를 사용한다.
ngrok http 18080 - 화면에 나오는 forwarding의 주소를 통해 접속하면 jenkins로 접속 가능하다.
3.2. GitHub 레포에서 Webhook 등록
- GitHub → 해당 레포지토리 접속
- 상단 탭 Settings 클릭
- 좌측 메뉴에서 Webhooks 클릭
- 오른쪽 상단 [Add webhook] 버튼 클릭
- Webhook 정보 입력
항목 값 Content type application/json Secret (비워둬도 됨. 보안 필요시만 설정) SSL 인증서 보통
Enable SSL verificationEvents "Just the push event." (또는 PR 이벤트도 체크 가능) 활성화 여부 Active 체크 Payload URL http://<JENKINS_IP>:18080/github-webhook/
'PLAYDATA 주간회고' 카테고리의 다른 글
| 플레이데이터 풀스택 백엔드 9기 8월 1주차 회고 (3) | 2025.08.05 |
|---|---|
| 플레이데이터 풀스택 백엔드 9기 7월 4주차 회고 (2) | 2025.07.30 |
| 플레이데이터 풀스택 백엔드 9기 7월 2주차 회고 (1) | 2025.07.07 |
| 플레이데이터 풀스택 백엔드 9기 7월 1주차 회고 (0) | 2025.07.03 |
| 플레이데이터 풀스택 백엔드 9기 6월 4주차 회고 (1) | 2025.07.01 |