호돌찌의 AI 연구소
article thumbnail

Jenkins에 대해서 짚어보고 설치하는 내용을 다루고자 합니다. 


1. Jenkins 개념

우선 Jenkins가 없는 경우에 대한 Workflow를 보겠습니다. 

 

일반적인 Workflow처럼 코드를 수정한 것을 Commit 하고, 이 변경사항을 확인하고 있으면 서버에도 반영하는 방식입니다. 즉 코드를 바꾸고, 변경 사항이 생기면 수정하였다는 것을 반영해야 하는 Workflow입니다.

 

하지만 Jenkins가 있는 경우에는 아래와 같습니다. 


Jenkins가 있으면 코드 수정하고 Commit을 하면 Jenkins가 이를 감지해, 서버에 있는 코드를 반영하고(Commit에 따른 자동빌드), 이 뿐만 아니라 서버 내의 코드의 특정 부분만을 반영하거나 동작(자동 테스팅)하게도 할 수 있습니다.
즉, 작업자가 수정하고 Github에 Commit하면, Jenkins가 감지하여 서버에 자동 반영하는 것입니다. 



2. Jenkins의 장점
- 소스 관리 시스템의 일관성 유지하게 도움을 주며 정적 코드 분석에 의한 코딩 규약 준수여부를 체크해준다. 

- Commit에 따른 빌드, 시간 간격에 의한 빌드 등 여러 방식에 따른 빌드를 자동으로 해준다. 빌드 관리 Tool이 있다면 효율성이 극대화됩니다.

- 빌드 과정에서 테스팅, 결합 테스트 환경 배포 등 자동 테스팅을 도와줍니다.

- 일일 Checkout과 Build, Compile 오류 검출, 프로파일링이 가능합니다. 

 

 

 

 

 

 

 

 

3. Jenkins 특징(Declarative Pipeline)

- Jenkinsfile을 이용해 Job 혹은 파이프라인을 정의할 수 있다. Jenkinsfile덕분에 일반 소스코드를 다루는 Github 업로드, Vscode로 수정하는 것으로 파일을 이용할 수 있습니다. 기본적으로 Jenkinsfile을 통해 Jenkins를 실행합니다. 

- Scripted Pipeline(스크립트 파이프라인)과 Declarative Pipeline(선언적 파이프라인)이라는 개념이 있습니다. Scripted Pipeline는 매우 유연하지만 시작하기 어렵다고 알려져 있습니다.  Declarative Pipeline는 사전에 정의된 구조만 사용할 수 있기 때문에 CI/CD 파이프라인이 단순한 경우에 적합하며 아직은 많은 제약사항이 따릅니다. 

- Scripted Pipeline 예시(groovy)

node { ## 빌드를 수행할 node 또는 agent를 의미한다.
    stage("Stage 1"){
        echo "Hello"
    }
    stage("Stage 2"){
        echo "World"
        sh "sleep 5"
    }
    stage("Stage 3"){
        echo "Good to see you!"
    }
}

- Declarative Pipeline 예시 (여기 syntax 참조)

pipeline {
    agent any
    stages {
        stage('Stage 1') {
            steps {
                script {
                    echo 'Hello'
                }
            }
        }

        stage('Stage 2') {
            steps {
                script {
                    echo 'World'
                    sh 'sleep 5'
                }
            }
        }

        stage('Stage 3') {
            steps {
                script {
                    echo 'Good to see you!'
                }
            }
        }
    }
}

즉, Declarative Pipeline는 미리 구조가 정의한 대로 구조안에서 필요한 정보만 입력하면 실행이 되는 파이프라인 기능이라고 할 수 있습니다. 정리하면, Jenkinsfile이 필요하고, 이 파일이 있으면 Pipeline을 통해서 미리 Declarative Pipeline을 만들어서 Workflow에 맞게 실행할 수 있다는 뜻입니다. 

 

 

4. 설치 

OS 별로 다양한데, 아래 글이 잘 설명이 되어있기 때문에 대체합니다. 

Window : https://lock.tistory.com/2

Ubuntu : https://hyunmin1906.tistory.com/272

 

 

 

 

 

 


https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

* 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

 

 

 

 

 


profile

호돌찌의 AI 연구소

@hotorch's AI Labs

포스팅이 도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!