Appendix 09. Jenkins 실습

윤희빈·2026년 7월 24일

Jenkins 실습 (5/28)


깃허브 및 젠킨스 실습

도커 설치 → ngrok 설정 → 젠킨스 설치 → 깃허브 연동

맥북 사용자는 이렇게 바꾸면 됨

1. Windows WSL 설치 부분은 생략

자료의 Windows 설명에 나오는 것들:

  • WSL 설치
  • PowerShell 관리자 권한 실행
  • wsl --install
  • BIOS 가상화 확인
  • WSL2 based engine 체크

이 부분은 맥북에서는 필요 없음.
맥은 WSL을 쓰지 않고 Docker Desktop for Mac을 설치해서 진행하면 돼.


2. Docker Desktop 설치

맥북에서는 아래 흐름으로 하면 됨.

  1. Docker Desktop for Mac 설치
  2. 설치 후 Docker Desktop 실행
  3. 상단 메뉴바에 고래 아이콘이 뜨고, Docker Desktop이 켜진 상태인지 확인

교수님 자료에서도 실습은 Docker Desktop이 실행된 상태로 진행해야 한다고 되어 있음.


3. Mac 칩 종류 확인

맥북은 여기서 중요함.

Apple Silicon 맥

M1 / M2 / M3 / M4 맥이면

→ Mac Apple Chip용 Docker Desktop 설치

Intel 맥

구형 Intel 맥이면

→ Mac Intel Chip용 Docker Desktop 설치

그리고 자료에 docker-compose_mac/intel 파일이 따로 언급되어 있으니까, 네 맥이 Intel인지 Apple Silicon인지에 맞는 compose 파일을 써야 함.


4. ngrok 가입 및 토큰 준비

여기서 ngrok도 해야 함.

ngrok은 GitHub가 내 로컬 Jenkins에 접근할 수 있도록 연결해주는 역할을 함.

맥북에서 Jenkins는 보통 아래 주소로 접속함.

http://localhost:8081

그런데 localhost는 내 컴퓨터 안에서만 보이는 주소라서 GitHub가 직접 접근할 수 없음.

그래서 ngrok을 사용해서 아래처럼 연결함.

GitHub → ngrok 공개 주소 → 내 맥북 Jenkins

ngrok: AI & API Gateway | Secure Tunnels & Traffic

your Authtoken 이동


5. .env 파일 생성

  • 도커 데스크탑 실행

  • 도커 로그인
    나는 그냥 스킵함.

  • 실습 폴더 만들어서 교수님이 준 compse 파일 넣기 → 파일명 변경


  • 자료에 나온 것처럼 docker-compose 파일과 같은 위치에 .env 파일을 만들고:
    NGROK_AUTHTOKEN=복사한_토큰
    인텔리제이에서 환경변수 파일을 생성한 모습.
  • pipeline.groovy → Jenkinsfile로 이름 바꾸기 교수님이 올려준 파일을 이름 변경해서 프로젝트 최상단에 둔다.

    pipeline {
        agent any
    
        stages {
            stage('Checkout') {
                steps {
                    echo 'Checkout completed'
                }
            }
    
            stage('Build') {
                steps {
                    echo 'Build completed successfully'
                }
            }
    
            stage('Test') {
                steps {
                    echo 'Test completed successfully'
                }
            }
        }
    
        post {
            success {
                sh '''
                    echo "Build Success" > build-result.txt
                    echo "Jenkins build completed successfully." >> build-result.txt
                    echo "Repository: JenkinsPractice" >> build-result.txt
                    echo "Branch build completed." >> build-result.txt
                '''
                archiveArtifacts artifacts: 'build-result.txt', fingerprint: true
            }
    
            failure {
                echo 'Build failed!'
            }
        }
    }

6. 터미널에서 compose 실행

Windows 자료에는 PowerShell이라고 되어 있는데, 맥북에서는 터미널을 쓰면 됨.

예를 들어 실습 폴더가 바탕화면에 있다면:

cd ~/Desktop/실습폴더명

그다음 자료처럼 compose 파일을 실행하면 됨.

docker-compose up -d


이 과정을 통해 Jenkins, nGrinder, ngrok 컨테이너가 함께 실행됨.


7. Jenkins 접속

Docker가 정상 실행되면 브라우저에서 접속하면 됨.

http://localhost:8081

이 상태에서 대기한다.


8. Jenkins 초기 비밀번호 확인

Windows 자료에서는 PowerShell에서 하라고 되어 있지만, 맥은 터미널에서 똑같이 하면 됨.

docker ps

여기서 Jenkins 컨테이너 이름이나 ID 확인 후:

docker exec -it 컨테이너ID bash

그다음 Jenkins 화면에 나온 경로를 그대로 입력:

cat /var/jenkins_home/secrets/initialAdminPassword

비밀번호 복사해서 Jenkins 화면에 붙여넣으면 됨.


9. Jenkins 초기 설정

Jenkins에 접속한 뒤에는 자료 흐름대로 진행하면 됨.

  1. 초기 비밀번호 입력
  2. Install suggested plugins 클릭
  3. 사용자 정보 입력
  4. Jenkins URL 확인 후 Save and finish
  5. 다시 localhost:8081로 로그인

10. GitHub Repository 생성

GitHub에 접속해서 Repository를 생성함.

  1. GitHub 가입 또는 로그인
  2. Repositories → New
  3. Repository 이름 입력

  4. 생성된 Repository 주소 복사

    https://github.com/heebindev/JenkinsPractice.git

이후 EGit 또는 Git을 이용해서 Clone, Commit, Push를 진행하면 됨.

→ 근데 이미 나는 인텔리제이에서 프로젝트를 만들었으므로 굳이 클론하지는 않고 이미 있는 로컬 프로젝트를 내 리파지토리에 연결할 것임.


11. GitHub Token 생성

GitHub와 Jenkins, EGit을 연동할 때 비밀번호 대신 Personal Access Token을 사용함.

자료 흐름은 다음과 같음.

  1. GitHub Settings
  2. Developer settings
  3. Personal access tokens
  4. Generate new token
  5. 필요한 권한 체크

  1. 생성된 토큰 복사 후 보관

토큰은 한 번 생성하면 다시 볼 수 없으므로 따로 저장해야 함.


12. 프로젝트와 리파지토리 연결하기

강의록에서는 egit을 사용했지만, 나는 인텔리제이를 사용하고, 인텔리제이 프로젝트를 만들어두었으므로 이걸 그냥 원격리파지토리에 연결하겠다.

  • 버전 관리 통합 활성화 클릭

    인텔리제이 프로젝트 폴더가 로컬 Git 리파지토리가 됨.
  • 원격 리파지토리와 연결
    git remote add origin <아까 복사한 리파지토리 주소>

  • 최초 커밋
    git add .
    git commit -m "Initial commit"
    git branch -M main
    git push -u origin main

  • 새 브랜치 만들기


13. Jenkins와 GitHub Webhook 연동

  • 젠킨스 설정에 접속

  • Dashboard -> Jenkins 관리 -> Credentials

  • System -> Global credentials

  • Add Credentials 클릭

  • sername with password

    Kind: Username with password
    
    Username: heebindev
    
    Password: GitHub에서 만든 Personal Access Token
    
    ID: github-token
    
    Description: github-token

  • ngrok 접속 Jenkins를 로컬에서 실행 중이기 때문에 GitHub Webhook의 Payload URL에 localhost:8081을 넣으면 안 됨. 대신 ngrok의 Forwarding 주소를 사용함. 단, ngrok의 주소는 계속 바뀌므로 다시 실습할때는 새로운 주소로 나옴.
  • see agent details → endpoint 복사

    https://cd22-203-249-77-25.ngrok-free.app/
  • GitHub Repository에서:
    1. Settings
    2. Webhooks
    3. Add webhook
    4. Payload URL에 ngrok 주소 입력
      1. 다시 실습할때는 ngrok의 새로운 주소로 해야함.
    5. 뒤에 /github-webhook/ 추가
    6. Content type은 application/json
    7. Secret에는 GitHub token 입력

13. Jenkins Item 생성

Jenkins에서 새로운 Item을 생성함.

  1. Dashboard
  2. 새로운 Item
  3. Pipeline 선택
  4. GitHub Project에 Repository 주소 입력
  5. GitHub hook trigger for GITScm polling 체크
  6. Pipeline 설정에서 Script Path에 Jenkinsfile 위치 입력

  7. Branches to build에서 /master*를 /main*으로 변경

이렇게 하면 GitHub에 push할 때마다 Jenkins가 자동으로 빌드함.


Jenkins 접속만 할 거면 ngrok 없어도 됨.
하지만 GitHub push → Jenkins 자동 빌드까지 하려면 ngrok이 필요함.
profile
비니비니히비니의 정리블로그

0개의 댓글