티스토리 뷰

0. 목표

Pipeline Item으로 GitHub Public Repository를 Docker 기반으로 빌드하는 것이다. 즉, Agent 서버 자체 JDK에 의존하지 않고, Docker 이미지 안에서 빌드 환경을 고정하는 방식을 목표로 했다.

추후 배포 서버도 AWS로 구축이 완료되면 ECR을 통해서 자동 배포까지 고려하고 있다.

1. Agent 사전 점검

Agent 서버에 접속해서 도커가 정상적으로 설치되어 있는지 확인한다.

docker --version
docker ps

또한, 그리고 Jenkins Agent 실행 유저가 docker 그룹에 속해 있어야 한다.

sudo usermod -aG docker ec2-user

git 도 설치되어 있는지 확인하고 없다면 설치를 진행한다.

sudo yum install git -y

2. Controller 사전 점검

Jenkins 설정의 - System Configuration - Plugins 선택을 해서 진입하라는 것을 보여주는 이미지

Jenkins 설정에서 System Configuration 에서 Plugins 를 들어간다.

그리고 좌측에서 Installed plugins 에서 아래 플러그인이 있는지 확인하고, 없다면 설치한다.

  • Docker Pipeline
  • Pipeline
  • Git
  • GitHub
플러그인 설치는 Available plugins 로 들어가서 검색해서 설치할 수 있다.

3. Jenkins에서 Pipeline Job 생성

대시보드에서 왼쪽의 [새로운 Item] 버튼을 클릭해서 이동한다.

Jenkins 대시보드의 왼쪽 [새로운 Item] 이라는 버튼을 클릭하라는 것을 보여주는 이미지

item name 을 입력하고, item type을 pipeline을 선택한다.

New Item 생성 화면

- Enter an item name : bplte-core-api
- Select an item type : Pipeline

그 다음 화면에서는 파이프라인 스크립트 부분만 작성하고, 다른 옵션은 건드리지 않았다.

pipeline {
    agent any
    
    stages {
        stage('Check Docker') {
            steps {
                sh 'docker version'
            }
        }
        
        stage('Checkout') {
            steps {
                git '{REPO_URL}'
            }
        }

        stage('Build (Docker)') {
            steps {
                script {
                    docker.image('gradle:9.2.1-jdk17').inside {
                        sh 'gradle build -x test'
                    }
                }
            }
        }
    }
    
    post {
        success {
            archiveArtifacts artifacts: 'build/libs/*.jar'
        }
    }
}

stage ‘Checkout’ 을 통해 배포할 GitHub URL 을 가져와서 docker 내부에서 실행하는 것이다. -x test는 테스트를 생략하겠다는 의미다.

stages 가 끝나고 나오는 post 는 빌드에 성공한 결과물을 저장하기 위함이다.

4. Build 수행

여러 우여곡절을 거쳐 성공했다.

마지막 빌드의 Console Output을 보면 Docker로 빌드를 수행한 것을 확인할 수 있다.

마무리 하며

이렇게 하는 것이 정석은 아니지만, 우선 현재 Jenkins 만 구축한 상태에서 할 수 있는 것을 해 보았다. 처음에 파이프라인 스크립트를 짜는 것을 잘 몰라서 Docker 를 설치해놓고도 그냥 Agent 내부에서 돌리기도 했다.

쉽지 않았지만, 오히려 정석을 한 번에 시도하지 않으면서 왜 그렇게 해야되는지를 더 직접적으로 느낄 수 있었다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함