Programming/CICD

(Jenkins, GitLab CI/CD 구축) 2. Jenkins GitLab 설정 및 연동하기

Jan92 2025. 3. 9. 20:00
반응형

(Jenkins, GitLab CI/CD 구축) 2. Jenkins GitLab 설정 및 연동하기

 

(Jenkins, GitLab CI/CD 구축) 1. Docker Jenkins 설치 및 구동하기

(Jenkins, GitLab CI/CD 구축) 1. Docker Jenkins 설치 및 구동하기해당 포스팅은 Jenkins, GitLab 기반 CI/CD 구축의 첫 번째 과정인 'VM Instance에 Docker를 통해 Jenkins를 설치 및 구동하는 과정'을 정리하였습니다.이

wildeveloperetrain.tistory.com

(Docker를 통해 Jenkins를 구동하는 과정을 정리한 이전 포스팅)

 

지난 포스팅에서는 VM 인스턴스에 Docker를 통해 Jenkins를 구동했는데요.

이어지는 이번 포스팅에서는 구동된 Jenkins에서 GitLab 연동을 하기 위한 설정 및 과정을 정리하였습니다.

 

해당 과정 다음으로는 연동된 GitLab을 통해 소스코드를 배포하는 과정이 Jenkins, GitLab CI/CD 구축의 마지막 포스팅이 될 것 같습니다.

 

 


1. GitLab 연동을 위해 필요한 Plugins 설치

GitLab, Generic Webhook Trigger Plugins

'Dashboard -> Jenkins 관리 -> Plugins -> Available plugins'로 이동하여 GitLab, Generic Webhook Trigger 플러그인을 설치합니다.

플러그인 설치 후 젠킨스를 재실행 해주어야 플러그인이 적용됩니다.

 

* 해당 과정에서 사용되는 플러그인만 우선적으로 설치하였으며, 이후 CD(Continuous Deployment) 과정 등에서 추가적인 플로그인 설치가 필요할 수 있습니다.

 

 

 


2. GitLab Token 발급

GitLab Access tokens

GitLab 'User Settings -> Access tokens -> Personal access tokens' 부분에서 Add new token 버튼을 통해 GitLab Token을 생성합니다.

token scope의 경우 'api', 'read_repository', 'write_repository' 정도만 부여하였는데, 사용 용도에 따라 필요한 scope를 추가해 주시면 됩니다.

 

 

 

Add new token

토큰이 생성되면 생성된 토큰의 값을 확인 또는 복사할 수 있는 부분이 있는데, 이 부분은 한번 닫히면 다시 확인할 수 없기 때문에 이후 과정에서 사용하기 위해 미리 복사해 둡니다.

 

 

 


3. 발급한 GitLab 토큰 Jenkins 등록

Jenkins Add credentials

'Dashboard -> Jenkins 관리 -> Credentials' 화면에서 Add credentials 버튼을 통해 credentials를 추가합니다.

 

 

 

New credentials

Kind를 GitLab API token으로 지정하고 API token 부분에는 GitLab에서 생성된 토큰 값을 넣어 credentials를 생성합니다.

 

 

 


4. GitLab Connection Test

GitLab Test Connection

'Dashboard -> Jenkins 관리 -> System -> GitLab' 영역에서 GitLab Connection 테스트를 합니다.

(해당 예시에서는 gitlab 서버를 따로 둔 것이 아니기 때문에 GitLab host URL을 'https://gitlab.com'으로 설정하였습니다.)

 

 

 


5-1. GitLab Project Clone Pipeline (Username with password)

Username with password credentials

먼저 pipeline에서 사용할 credentials를 추가로 생성합니다.

Username은 GitLab Id 또는 GitLab Email을 입력해 주시고, Password는 GItLab Access Token 값을 입력해 주시면 됩니다.

 

 

 

Jenkins New Item Pipeline

이어서 'Dashboard -> 새로운 Item' 화면을 통해 gitlab 프로젝트 clone을 테스트할 Pipeline을 생성합니다.

 

 

 

Pipeline script

생성된 Pipeline에서 구성(Configuration) 설정을 통해 실행할 pipeline script를 작성합니다.

 

 

pipeline {
    agent any
    
    stages {
        stage('Clone') {
            steps {
                git branch: '${branch}', credentialsId: '${생성한 credentialId}', url: '${repository 주소}.git'
            }
        }
    }
}

username with password credentials 사용 시 다음과 같은 형식의 script를 통해 프로젝트를 clone 하였습니다.

 

 

 

pipeline clone test

script 저장 후 '지금 빌드' 버튼을 통해 해당 스크립트를 실행할 수 있으며, 성공 실패 여부를 확인할 수 있습니다.

(상세 내용은 Console Output을 통해 확인할 수 있습니다.)

 

 

 


5-2. GitLab Project Clone Pipeline (Secret text)

Secret text credentials

추가적으로 Secret text 방식의 credentials를 사용하는 경우 아래와 같은 pipeline script를 통해 clone 작업을 수행할 수 있습니다.

 

 

pipeline {
    agent any

    environment {
        // GitLab API Token을 StringCredentials로 가져옴
        GITLAB_TOKEN = credentials('gitlab_token_secret_text') // Jenkins 자격증명 ID
    }

    stages {
        stage('Clone Repository') {
            steps {
                script {
                    // GitLab 저장소 URL 설정
                    def gitlabRepoUrl = 'gitlab repository 주소'
                    def repoDir = 'repositoryDirectory'
                    
                    // 디렉터리 삭제 후 clone
                    sh """
                        if [ -d "$repoDir" ]; then
                            rm -rf "$repoDir"
                        fi
                        git clone https://${gitlabUserName}:${GITLAB_TOKEN}@${gitlabRepoUrl.replace("https://", "")}
                    """
                }
            }
        }
    }
}

secret text credentials 사용 시 다음과 같은 script를 통해 프로젝트를 clone 하였습니다.

 

 

 


6. GitLab Webhook 설정

Jenkins Pipeline Triggers

프로젝트에서 특정 이벤트가 발생했을 때 webhook을 통해 위 과정에서 만든 pipeline을 실행시키는 설정을 하는 방법입니다.

 

먼저 Jenkins에서 생성한 해당 pipeline의 Triggers 설정 부분의 'Build when a change is pushed to GitLab. GitLab webhook URL:' 부분을 확인하고 활성화합니다.

(예시에서는 테스트를 위해 단순 Push Events에 대해서만 트리거가 동작하도록 설정하였습니다.)

 

 

 

Triggers Secret token

이어서 Triggers 설정 아래로 내려가면 'Secret token'을 생성하는 곳이 있는데요.

Generate를 통해 토큰을 생성합니다.

 

 

 

GitLab Webhook settings

마지막으로 GItLab의 해당 프로젝트에서 'Settings -> Webhooks' 부분을 통해 앞서 Jenkins Pipeline Triggers 설정 부분에서 확인했던 Webhook URL과 Secret Token을 입력하여 webhook 설정을 추가합니다.

 

여기까지 설정이 완료되었다면 프로젝트에 push event가 발생했을 때 jenkins의 pipeline이 동작하는 것을 확인할 수 있습니다.

 

 

 

 

< 참고 자료 >

https://velog.io/@kimsei1124/Jenkins%EC%97%90%EC%84%9C-Gitlab-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0
https://doohee94.tistory.com/50

반응형