넥서스 테스트


GitLab에서 코드를 푸시하면 Jenkins가 이를 감지하여 Docker 이미지를 빌드하고 Nexus에 푸시하는 CI/CD 파이프라인을 설정하는 방법을 설명하겠습니다. 이를 위해 Jenkins Pipeline 스크립트를 사용하여 전체 프로세스를 자동화할 수 있습니다. ### 전체 과정 개요 1. **GitLab 설정**: GitLab에 푸시할 때마다 Jenkins를 트리거할 수 있도록 Webhook을 설정합니다. 2. **Jenkins 설정**: Jenkins에 GitLab 프로젝트를 빌드할 Pipeline Job을 생성합니다. 3. **Docker 이미지 빌드 및 Nexus에 푸시**: Jenkins Pipeline을 사용하여 Docker 이미지를 빌드하고 Nexus에 푸시합니다. ### Jenkins Pipeline 스크립트 Jenkins의 파이프라인은 Jenkinsfile로 정의되며, 이 파일에는 빌드, 테스트, 배포 단계가 포함됩니다. 다음은 이러한 과정을 수행하는 예시 Jenkinsfile입니다: ```groovy pipeline { agent any environment { DOCKER_IMAGE = "my-tomcat-app" DOCKER_REGISTRY = "nexus.example.com:8082" REGISTRY_CREDENTIALS = credentials('nexus-docker-credentials') // Nexus 인증 정보 } stages { stage('Checkout') { steps { // GitLab 저장소에서 코드 가져오기 git branch: 'main', url: 'https://gitlab.com/your-username/your-repository.git' } } stage('Build Docker Image') { steps { // Docker 이미지 빌드 script { def dockerBuild = docker.build("${DOCKER_IMAGE}:latest", ".") } } } stage('Push Docker Image to Nexus') { steps { script { docker.withRegistry("https://${DOCKER_REGISTRY}", 'nexus-docker-credentials') { // Nexus에 Docker 이미지 푸시 def dockerPush = docker.image("${DOCKER_IMAGE}:latest") dockerPush.push("latest") } } } } } post { always { // Jenkins 작업 완료 후 Docker 정리 cleanWs() } } } ``` ### Jenkinsfile 설명 - **agent any**: Jenkins의 어떤 에이전트에서나 실행할 수 있도록 설정합니다. - **환경 변수 설정**: - `DOCKER_IMAGE`는 빌드할 Docker 이미지 이름입니다. - `DOCKER_REGISTRY`는 Nexus의 Docker 레지스트리 URL입니다. - `REGISTRY_CREDENTIALS`는 Jenkins에 저장된 Nexus 인증 정보입니다. - **단계 정의**: - **Checkout**: GitLab에서 소스 코드를 체크아웃합니다. - **Build Docker Image**: Dockerfile을 기반으로 Docker 이미지를 빌드합니다. - **Push Docker Image to Nexus**: 빌드한 Docker 이미지를 Nexus 레지스트리에 푸시합니다. - **post**: 파이프라인 작업이 완료되면 워크스페이스를 정리합니다. ### Jenkins 설정 단계 1. **Jenkins에 플러그인 설치**: - Jenkins의 **Docker Pipeline** 플러그인 및 **GitLab** 플러그인을 설치합니다. 2. **Nexus 인증 정보 추가**: - Jenkins에서 **Manage Jenkins** > **Manage Credentials**로 이동하여 Nexus 레지스트리의 Docker 인증 정보를 추가합니다. 이를 통해 `credentials('nexus-docker-credentials')` 부분에서 사용할 수 있습니다. 3. **Jenkins Job 생성**: - Jenkins에서 **New Item**을 선택하고 **Pipeline**을 선택하여 새로운 파이프라인 Job을 생성합니다. - GitLab 프로젝트의 URL을 지정하고, **Pipeline** 섹션에서 위의 Jenkinsfile 스크립트를 입력합니다. 4. **GitLab Webhook 설정**: - GitLab 프로젝트의 **Settings** > **Webhooks**로 이동하여 Jenkins 서버의 GitLab Webhook URL을 추가합니다. 이는 GitLab에서 커밋이 발생할 때마다 Jenkins에서 자동으로 빌드를 트리거하도록 설정합니다. ### 요약 이 파이프라인은 GitLab에 푸시된 코드를 Jenkins가 감지하여 Docker 이미지를 빌드하고, Nexus에 푸시합니다. Jenkins Pipeline을 통해 이러한 작업을 자동화함으로써, 일관된 빌드 및 배포 프로세스를 구현할 수 있습니다. Jenkinsfile 내에서 필요한 부분은 자신의 환경에 맞게 수정하여 사용하시면 됩니다.
되돌아가기 수정