(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 설치
'Dashboard -> Jenkins 관리 -> Plugins -> Available plugins'로 이동하여 GitLab, Generic Webhook Trigger 플러그인을 설치합니다.
플러그인 설치 후 젠킨스를 재실행 해주어야 플러그인이 적용됩니다.
* 해당 과정에서 사용되는 플러그인만 우선적으로 설치하였으며, 이후 CD(Continuous Deployment) 과정 등에서 추가적인 플로그인 설치가 필요할 수 있습니다.
2. GitLab Token 발급
GitLab 'User Settings -> Access tokens -> Personal access tokens' 부분에서 Add new token 버튼을 통해 GitLab Token을 생성합니다.
token scope의 경우 'api', 'read_repository', 'write_repository' 정도만 부여하였는데, 사용 용도에 따라 필요한 scope를 추가해 주시면 됩니다.
토큰이 생성되면 생성된 토큰의 값을 확인 또는 복사할 수 있는 부분이 있는데, 이 부분은 한번 닫히면 다시 확인할 수 없기 때문에 이후 과정에서 사용하기 위해 미리 복사해 둡니다.
3. 발급한 GitLab 토큰 Jenkins 등록
'Dashboard -> Jenkins 관리 -> Credentials' 화면에서 Add credentials 버튼을 통해 credentials를 추가합니다.
Kind를 GitLab API token으로 지정하고 API token 부분에는 GitLab에서 생성된 토큰 값을 넣어 credentials를 생성합니다.
4. GitLab Connection Test
'Dashboard -> Jenkins 관리 -> System -> GitLab' 영역에서 GitLab Connection 테스트를 합니다.
(해당 예시에서는 gitlab 서버를 따로 둔 것이 아니기 때문에 GitLab host URL을 'https://gitlab.com'으로 설정하였습니다.)
5-1. GitLab Project Clone Pipeline (Username with password)
먼저 pipeline에서 사용할 credentials를 추가로 생성합니다.
Username은 GitLab Id 또는 GitLab Email을 입력해 주시고, Password는 GItLab Access Token 값을 입력해 주시면 됩니다.
이어서 'Dashboard -> 새로운 Item' 화면을 통해 gitlab 프로젝트 clone을 테스트할 Pipeline을 생성합니다.
생성된 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 하였습니다.
script 저장 후 '지금 빌드' 버튼을 통해 해당 스크립트를 실행할 수 있으며, 성공 실패 여부를 확인할 수 있습니다.
(상세 내용은 Console Output을 통해 확인할 수 있습니다.)
5-2. GitLab Project Clone Pipeline (Secret text)
추가적으로 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 설정
프로젝트에서 특정 이벤트가 발생했을 때 webhook을 통해 위 과정에서 만든 pipeline을 실행시키는 설정을 하는 방법입니다.
먼저 Jenkins에서 생성한 해당 pipeline의 Triggers 설정 부분의 'Build when a change is pushed to GitLab. GitLab webhook URL:' 부분을 확인하고 활성화합니다.
(예시에서는 테스트를 위해 단순 Push Events에 대해서만 트리거가 동작하도록 설정하였습니다.)
이어서 Triggers 설정 아래로 내려가면 'Secret token'을 생성하는 곳이 있는데요.
Generate를 통해 토큰을 생성합니다.
마지막으로 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
'Programming > CICD' 카테고리의 다른 글
(Jenkins, GitLab CI/CD 구축) 1. Docker Jenkins 설치 및 구동하기 (0) | 2025.03.02 |
---|---|
GitHub Actions + Docker CI/CD 구축하기 (0) | 2025.01.05 |
Spring Boot 프로젝트 GitHub Actions CI/CD 구축하기 (1) | 2024.12.29 |