본문 바로가기

개발환경

[Jenkins] CI/CD 파이프라인

소프트웨어를 수동으로 배포할 때는 여러 문제점이 있습니다.
직접 하다보니 실수가 발생할 수도 있고 시간이 오래 걸리며 코드가 충돌하거나 테스트가 누락될 수도 있습니다.
이런 문제들을 해결하기 위해서 CI/CD 도구를 이용할 수 있습니다.
오늘은 그 중 대표적인 젠킨스를 알아보겠습니다.


Jenkins

젠킨스는 소프트웨어 개발 과정에서 지속적인 통합과 지속적인 배포를 지원하는 오픈소스 자동화 서버입니다.
빌드, 테스트, 배포 과정을 자동화하여 워크플로우를 획기적으로 개선할 수 있습니다.

Jenkins 아키텍처

젠킨스는 크게 젠킨스 마스터와 에이전트로 구분할 수 있습니다.
마스터는 핵심 기능과 인터페이스를 제공하고 플러그인과 스케줄링을 관리합니다.
에이전트는 실제로 빌드와 배포를 수행하는 작업자 노드로 마스터의 관리 하에 작업을 수행합니다.

 

 

파이프라인 구조

pipeline {
    agent any  // 어떤 Jenkins 에이전트에서 실행할지 지정
    
    // 파이프라인에서 사용할 도구 정의
    tools {
        maven 'Maven 3.6.3'
        jdk 'JDK 11'
    }

    // 환경 변수 설정
    environment {
        GITHUB_CREDENTIALS = credentials('github-credentials')
    }

    // 실제 실행될 스테이지들
    stages {
        stage('Checkout') {
            steps {
                // 각 스테이지에서 실행할 단계
                git 'https://github.com/myrepo.git'
            }
        }
    }

    // 파이프라인 완료 후 실행될 작업
    post {
        success {
            echo '빌드 성공!'
        }
        failure {
            echo '빌드 실패...'
        }
    }
}

최근에 다양한 도구들을 다양하게 접하다보니까 내가 왜 이걸 사용해야 하는지 마음이 복잡해졌습니다.
가장 중요한 건 도구의 사용법이 아니라 이 도구를 왜 사용해야 하는가인 것 같습니다.

글을 끝까지 봐주셔서 감사합니다.
틀린 내용이 있다면 댓글로 지적 부탁드립니다.