도커 설치 → ngrok 설정 → 젠킨스 설치 → 깃허브 연동
자료의 Windows 설명에 나오는 것들:
wsl --install이 부분은 맥북에서는 필요 없음.
맥은 WSL을 쓰지 않고 Docker Desktop for Mac을 설치해서 진행하면 돼.
맥북에서는 아래 흐름으로 하면 됨.
교수님 자료에서도 실습은 Docker Desktop이 실행된 상태로 진행해야 한다고 되어 있음.

맥북은 여기서 중요함.

M1 / M2 / M3 / M4 맥이면
→ Mac Apple Chip용 Docker Desktop 설치
구형 Intel 맥이면
→ Mac Intel Chip용 Docker Desktop 설치
그리고 자료에 docker-compose_mac/intel 파일이 따로 언급되어 있으니까, 네 맥이 Intel인지 Apple Silicon인지에 맞는 compose 파일을 써야 함.
여기서 ngrok도 해야 함.
ngrok은 GitHub가 내 로컬 Jenkins에 접근할 수 있도록 연결해주는 역할을 함.
맥북에서 Jenkins는 보통 아래 주소로 접속함.
http://localhost:8081
그런데 localhost는 내 컴퓨터 안에서만 보이는 주소라서 GitHub가 직접 접근할 수 없음.
그래서 ngrok을 사용해서 아래처럼 연결함.
GitHub → ngrok 공개 주소 → 내 맥북 Jenkins
ngrok: AI & API Gateway | Secure Tunnels & Traffic

your Authtoken 이동

.env 파일 생성
나는 그냥 스킵함.


docker-compose 파일과 같은 위치에 .env 파일을 만들고:NGROK_AUTHTOKEN=복사한_토큰
인텔리제이에서 환경변수 파일을 생성한 모습.

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!'
}
}
}Windows 자료에는 PowerShell이라고 되어 있는데, 맥북에서는 터미널을 쓰면 됨.
예를 들어 실습 폴더가 바탕화면에 있다면:
cd ~/Desktop/실습폴더명
그다음 자료처럼 compose 파일을 실행하면 됨.
docker-compose up -d

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

Docker가 정상 실행되면 브라우저에서 접속하면 됨.
http://localhost:8081

이 상태에서 대기한다.
Windows 자료에서는 PowerShell에서 하라고 되어 있지만, 맥은 터미널에서 똑같이 하면 됨.
docker ps
여기서 Jenkins 컨테이너 이름이나 ID 확인 후:
docker exec -it 컨테이너ID bash
그다음 Jenkins 화면에 나온 경로를 그대로 입력:
cat /var/jenkins_home/secrets/initialAdminPassword

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

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



localhost:8081로 로그인
GitHub에 접속해서 Repository를 생성함.


이후 EGit 또는 Git을 이용해서 Clone, Commit, Push를 진행하면 됨.
→ 근데 이미 나는 인텔리제이에서 프로젝트를 만들었으므로 굳이 클론하지는 않고 이미 있는 로컬 프로젝트를 내 리파지토리에 연결할 것임.
GitHub와 Jenkins, EGit을 연동할 때 비밀번호 대신 Personal Access Token을 사용함.
자료 흐름은 다음과 같음.



토큰은 한 번 생성하면 다시 볼 수 없으므로 따로 저장해야 함.
강의록에서는 egit을 사용했지만, 나는 인텔리제이를 사용하고, 인텔리제이 프로젝트를 만들어두었으므로 이걸 그냥 원격리파지토리에 연결하겠다.

인텔리제이 프로젝트 폴더가 로컬 Git 리파지토리가 됨.git remote add origin <아까 복사한 리파지토리 주소> 
git add .
git commit -m "Initial commit"
git branch -M main
git push -u origin main 







Kind: Username with password
Username: heebindev
Password: GitHub에서 만든 Personal Access Token
ID: github-token
Description: github-token 
localhost:8081을 넣으면 안 됨. 대신 ngrok의 Forwarding 주소를 사용함. 단, ngrok의 주소는 계속 바뀌므로 다시 실습할때는 새로운 주소로 나옴.
https://cd22-203-249-77-25.ngrok-free.app/

/github-webhook/ 추가application/json
Jenkins에서 새로운 Item을 생성함.



GitHub hook trigger for GITScm polling 체크



이렇게 하면 GitHub에 push할 때마다 Jenkins가 자동으로 빌드함.
Jenkins 접속만 할 거면 ngrok 없어도 됨.
하지만 GitHub push → Jenkins 자동 빌드까지 하려면 ngrok이 필요함.