TIL

Window PC에 Docker, jenkins 설치, GitHub 연동하기 (2) | 난 삽질로 유학까지 다녀왔단 사실

everyday-spring 2024. 10. 30. 02:40

https://everyday-spring.com/628

 

Window PC에 Docker, jenkins 설치, GitHub 연동하기 (1) | 난 대학시절 삽질을 전공했단 사실

시작에 앞서....Docker를... AWS EC2에 설치 했어야 하는데별 의심없이 개인 pc에 설치했다...잘못된 방향으로 핸들이 고장난 에잇톤트럭마냥 달려서 하루를 낭비했다이것은.. 그 기록....  Docker 설치h

everyday-spring.com

지난 글에서는

Docker, Jenkins 설치, Github 토큰을 발급받았다

 

발급받은 토큰을 사용해 Git repository의 정보를 가져오고 빌드까지 해보자!!

 

Jenkins에 Github token 등록하기

웹에서 젠킨스에 접속한다

현재 로컬에 설치했기 때문에 

localhost:8080에 접속한다

눈을 감고 있는 대머리 아저씨

Jenkins 초기 설정시 입력한 계정 정보를 입력한다

 

 

Jenkins 관리 > Credentials

 

(global) 클릭

+ Add Credentials 클릭

세칸을 필수로 채워준다

Password에 GitHub에서 발급받은 token을 입력한다

 

ID는 github로 만들었다 (아무거나 상관없음)

github Credential은 Git repository에 접근해서 checkout할 때 사용한다

 

Jenkins Pipeline GitHub Repository pull, build 하기

새로운 아이템을 등록한다

 

 

이름을 설정하고 pipeline을 선택

 

 

GitHub project (대상 repository 주소 입력)

GitHub hook trigger for GITScm polling

두 항목 체크

 

 

pipeline {
    agent any
    stages {
        stage('checkout') {
            steps {
                git branch: 'main',
                    credentialsId: 'github',
                    url: 'https://github.com/[GitHub Repository url].git'
            }
        }
        stage('build') {
            steps {
               sh ''' 
                echo 'start build' 
                chmod +x gradlew
                ./gradlew clean build -x test
                '''
            }
        }
    }
}
더보기

pipeline {
    agent any
    stages {
        stage('checkout') { // 작업 이름, 자유롭게 입력
            steps {
                git branch: 'main', // 가져올 대상 Branch명
                    credentialsId: 'github', // Jenkins에 등록한 Github Credential ID
                    url: 'https://github.com/[GitHub Repository url].git' // repository 주소
            }
        }
        stage('build') {
            steps {
               sh ''' 
                echo 'start build' // 단순 출력문
                chmod +x gradlew // 폴더에 대한 접근권한을 설정
                ./gradlew clean build -x test // 빌드!!
                '''
            }
        }
    }
}

build 명령을 사용하면 테스트까지 진행되고

bootJar 명령을 하용하면 test를 제외하고 실행에 필요한 부분만 빌드된다

(프로젝트 문제로 test에서 오류가나서.. 임시로 제외했다...

 

 

파이프라인까지 작성했다면 

빌드 Build History에 넘버링된 번호를 클릭하면 상세정보를 확인할 수 있다

(날씨로 실행상태가 나타난다 잘돌아가면 해가 쨍쨍하다... 흐린건.. 무수히 많이 쌓인 도전의 흔적..)

 

 

실행된 Stages에 대한 상세정보

Console Output에서 log를 확인할 수 있다

 

log를 확인해보면 pipeline에 설정된

checkout과 build가 정상실행되었다!

야호!

 

ngrok 주소 발급하기

GitHub에서 Webhook을 날려주려면 jenkins 서버 주소를 입력해야하는데

localhost:8080은 입력할 수 없다

https://download.ngrok.com/windows?tab=download

 

Download ngrok

Download ngrok

download.ngrok.com

ngrok을 설치하고 localhost에 연결되는 주소를 발급받아보자

 

회원가입하고 Authtoken 을 복사한다

 

다운받은 ngrok을 실행해서 계정을 설정해준다 (window 설치파일 기준 실행하면 shell이 열림)

ngrok config add-authtoken $YOUR_AUTHTOKEN

 

 

 

ngrok http 8080

계정 설정 후 포트정보와 함께 명령어를 입력하면 외부접근 가능한 주소를 발급해준다

But, 무료계정의 경우 저 발급받은 링크가 얼마안간다..

 

(나는 그냥 귀찮아서 로컬 pc를 포트포워딩 했다...)

 

 

GitHub Jenkins Webhook settings

GitHub Repository Settings

 

 

Webhooks에 ngrok에서 발급받은 주소 (포트를 포함해서 발급받았기 때문에 포트 생략)

또는 젠킨스 서버의 public 주소를 넣어준다! (포트까지 적어줘야한다)

 

그리고 뒤에 /github-webhook/ 을 입력!

 

여기까지 설정해주면 Jenkins에 지정해둔 브랜치에 변화가 있을때 마다 자동으로 pipeline이 실행된다!!

 

 

 

 


이렇게 했는데 생각해보니 로컬에서 할일이 아니었다

응 다시해~ 서버에 docker 설치부터~