Jenkins란

박세건·2024년 7월 12일
0

기술 학습

목록 보기
2/11

Jenkins란 무엇인가?

Jenkins는 오픈소스 자동화 서버로, 소프트웨어 개발과 관련된 다양한 작업을 자동화하기 위해 사용됩니다. 주로 CI/CD(Continuous Integration/Continuous Deployment) 파이프라인을 구축하는 데 활용되며, 개발부터 배포까지의 프로세스를 효율적으로 관리할 수 있도록 도와줍니다.


Jenkins의 주요 특징

1. 오픈소스

  • 누구나 무료로 사용 가능하며, 커뮤니티 기반으로 지속적인 업데이트와 플러그인 지원.

2. 확장성

  • 1,800개 이상의 플러그인을 통해 다양한 작업과 도구를 연동 가능.

3. 플랫폼 독립적

  • Java 기반으로 동작하여 Windows, macOS, Linux 등 다양한 플랫폼에서 실행 가능.

4. 유연한 설정

  • 웹 기반의 직관적인 UI와 코드 기반 설정(Jenkinsfile)을 모두 지원.

5. 분산 빌드

  • 여러 노드에서 빌드를 병렬로 실행하여 효율성 극대화.

CI/CD란?

CI (Continuous Integration)

  • 개발자가 코드를 자주 통합하여 자동화된 빌드와 테스트를 실행.
  • 코드 변경 시 발생할 수 있는 오류를 빠르게 발견하고 해결.

CD (Continuous Deployment)

  • 빌드된 애플리케이션을 자동으로 배포.
  • 인프라와 애플리케이션 배포 프로세스를 일관되게 관리.

Jenkins는 CI/CD 파이프라인을 자동화하여 개발 속도와 품질을 동시에 향상시킵니다.


Jenkins의 주요 구성 요소

1. Pipeline

  • 소프트웨어 개발과 배포 과정의 전체 흐름을 정의.
  • Declarative Pipeline과 Scripted Pipeline 두 가지 형태로 작성 가능.

2. Node

  • 작업을 실행하는 Jenkins의 단위.
  • Master Node와 Agent Node로 구성.

3. Plugin

  • Jenkins의 기능을 확장하기 위한 모듈.
  • Git, Docker, Kubernetes 등 다양한 도구와 연동 가능.

4. Job

  • Jenkins에서 실행되는 작업 단위.
  • 빌드, 테스트, 배포 등 다양한 작업을 정의.

Jenkins 설치 및 기본 사용법

설치

# Ubuntu에서 Jenkins 설치
sudo apt update
sudo apt install openjdk-11-jdk
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins

# Jenkins 시작
sudo systemctl start jenkins

초기 설정

  1. 웹 브라우저에서 http://<your-server-ip>:8080 접속.
  2. 제공된 관리자 비밀번호 입력.
  3. 필요한 플러그인 설치 및 기본 설정 완료.

Jenkinsfile 작성 예제

Jenkinsfile은 Jenkins Pipeline을 정의하는 코드입니다. Declarative Pipeline의 예제는 다음과 같습니다:

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                echo 'Building...'
                sh 'mvn clean package'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing...'
                sh 'mvn test'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying...'
                sh 'scp target/my-app.jar user@server:/path/to/deploy'
            }
        }
    }
}

Jenkins와 Docker의 통합

Jenkins는 Docker와 통합하여 컨테이너 환경에서 빌드와 배포를 실행할 수 있습니다.

Docker 컨테이너에서 Jenkins 실행

# Jenkins 컨테이너 실행
sudo docker run -d -p 8080:8080 -p 50000:50000 --name jenkins \
    -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

Jenkins Pipeline에서 Docker 사용 예제

pipeline {
    agent {
        docker {
            image 'maven:3.8.1'
        }
    }

    stages {
        stage('Build') {
            steps {
                sh 'mvn clean package'
            }
        }
    }
}

Jenkins의 장점

  1. 자동화: 빌드, 테스트, 배포 과정을 자동화하여 개발 효율성 증대.
  2. 확장성: 다양한 플러그인을 통해 기능 확장 가능.
  3. 유연성: 커스터마이징 가능한 파이프라인 구성.
  4. 오픈소스: 무료로 제공되며, 커뮤니티에서 적극적인 지원.

Jenkins와 다른 CI/CD 도구 비교

특징JenkinsGitLab CI/CDCircleCI
설치 방식자체 호스팅GitLab 통합클라우드 기반
플러그인 지원매우 풍부제한적제한적
사용 편의성초기 설정 복잡GitLab과 통합 간편간편
확장성높은 확장성제한적제한적

profile
멋있는 사람 - 일단 하자

0개의 댓글