[CI/CD] #3-1 새로운 젠킨스 파이프라인 잡

keen.log·2024년 2월 15일
0

CI/CD

목록 보기
3/7
post-thumbnail
이 게시물은 [초보를 위한 젠킨스 2 활용 가이드 2/e]를 참고해서 작성한 내용임을 밝힙니다.

1. 젠킨스 설정 마법사

- 전제 조건

  • 임의의 플랫폼에서 돌아가고 있는 젠킨스 서버(도커, 스텐드얼론, 클라우드, VM, 서블릿 컨테이너 등)
  • 플러그인을 다운로드할 수 있게 젠킨스 서버를 인터넷에 연결

- 젠킨스 잠금 해제하기

localhost:8080로 접속 후 initialAdminPassword를 젠킨스 화면에 입력하면 된다.

❗위처럼 권한 제한이 있어 sudo -s로 루트(슈퍼 유저) 권한으로 쉘을 실행하도록 설정한 후 initialAdminPassword를 얻었다.


- 젠킨스 커스터마이징

Install suggested plugins
Pipeline as Code나 Git 등 젠킨스 커뮤니티에서 추천하는 일반적인 플러그인이 모두 설치된다.

Select plugins to install
설치할 플러그인을 고를 수 있다.

나는 Select plugins to install을 선택했다(책에서 하라는 대로...) 클릭 후 All, None, Suggested 중 하나를 선택할 수 있는데 원하는 플러그인을 선택한다(친절하게도 추천 플러그인은 이미 선택되어 있다!!) 하단의 Install 버튼을 누르면 플러그인이 설치된다.


- 첫 번째 관리자 만들기

플러그인이 설치된 후, 다음 화면처럼 관리자를 만드는 화면이 나타난다. 이 관리자는 이전 단계인 젠킨스 셋업 마법사에서 사용한 관리자 계정과는 다르니 주의하자!!(내용 작성 후 Continue as admin 버튼을 눌러 초기 관리자로 진행하는 것도 가능하다.)

참고하는 책이 2018년에 출간된 책이라 현재(2024년)과는 약간 갭이 있는 듯 하다. 책에는 없는 Instance Configuration 설정이 있었는데 찾아보니 Default URL로 설정하는 것을 권고하고 있어 건드리지 않고 그냥 넘어갔다. 이에 대한 참고 내용은 아래에 링크로 걸어놓았다.

참고: Instance Configuration Default URL 권고 내용

내용 작성 후 Save and Finish 버튼을 누르면 된다.
모두 완료되면 🎉Jenkins is ready! Your jenkins setup is complete🎉라는 환영 메시지를 볼 수 있다.

이제 Start using Jenkins를 눌러 젠킨스 대시보드로 넘어가보자


2. 새로운 젠킨스 파이프라인 잡

예전 파이프라인 구축 방식

  • 프리스타일 잡을 이용해 각 CI 단계를 젠킨스 잡을 이용해 구성하는 것이었다.
  • 이런 프리스타일 잡은 웹 기반의 GUI로 동작하는 설정 방식이었다.
  • CI 파이프라인에 변경 사항을 만들기 위해서는 젠킨스에 로그인해 각각의 프리스타일 잡의 설정을 변경해야만 했다.

🫧 Pipeline as Code (새로운 젠킨스 파이프라인 잡)

  • 모든 CI/CD 파이프라인을 코드로 작성하는 것이다.
  • 프로그래밍과 버전 관리를 지원한다.

Pipeline as Code 방식의 장점

  • 프로그래밍이 가능하다.
  • 모든 CI/CD 파이프라인 설정이 하나의 파일(jenkinsfile)을 이용해 표현 가능하다.
  • 일반 코드처럼 버전 관리가 가능하다.
  • 파이프라인을 서술적 파이프라인 문법을 이용해 정의할 수 잇게 하여 쉽고 아름답게 코딩할 수 있다.

이제 간단한 CI 파이프라인을 만들어보며 젠킨스 파이프라인 잡을 알아보자!!

- 전제 조건

  • 임의의 플랫폼에서 돌아가고 있는 젠킨스 서버
  • 플러그인을 다운로드하기 위한 젠킨스 서버의 인터넷 연결
  • 추천 플러그인이 모두 설치된 젠킨스 서버

- 젠킨스 파이프라인 잡 만들기

  1. 젠킨스 대시보드에서 New Item 버튼을 누른다.

  2. 여러 종류의 젠킨스 잡을 선택하는 화면이 나타나면 Pipeline을 선택하고 Enter an item name란에 파이프라인의 이름을 작성하고 OK 버튼을 누른다.

  3. General 창이 나오는데 파이프라인 설정을 할 수 있다. 간단한 description을 적고 밑의 pipeline 영역으로 이동한다(description은 생략해도 괜찮다. 나는 그냥 작성해봤다).

  4. pipeline 영역에서 definition을 pipeline script로 설정한다.

    • definition 영역에서는 pipeline scriptpipeline script from SCM 두 가지 중 하나를 선택할 수 있다.
    • pipeline script: script 영역 안에 파이프라인 코드를 작성할 수 있다.
    • pipeline script from SCM: 파이프라인 스크립트(Jenkinfile)가 자동으로 버전 관리 시스템에서 내려받아진다(이 옵션은 다음 절에서 자세히 살펴본다).
    • 각 옵션의 간략한 설명을 보고 싶다면 물음표 모양의 아이콘을 클릭하자!
    • pipeline syntax는 GUI 기반의 설정을 코드로 변환하는 것을 도와준다(이 옵션은 다음 절에서 자세히 살펴본다).
  5. 젠킨스에서 제공된 샘플 코드를 이용해 파이프라인이 어떻게 동작하는지 알아보자! try sample Pipeline... 선택 후 GitHub+Maven 옵션을 선택하자.

  6. Script 영역이 샘플 코드로 채워질 것이다. 해당 코드가 서술적 파이프라인 문법이다.

    pipeline {
        agent any
    
        tools {
            // Install the Maven version configured as "M3" and add it to the path.
            maven "M3"
        }
    
        stages {
            stage('Build') {
                steps {
                    // Get some code from a GitHub repository
                    git 'https://github.com/jglick/simple-maven-project-with-tests.git'
    
                    // Run Maven on a Unix agent.
                    sh "mvn -Dmaven.test.failure.ignore=true clean package"
    
                    // To run Maven on a Windows agent, use
                    // bat "mvn -Dmaven.test.failure.ignore=true clean package"
                }
    
                post {
                    // If Maven was able to run the tests, even if some of the test
                    // failed, record the test results and archive the jar file.
                    success {
                        junit '**/target/surefire-reports/TEST-*.xml'
                        archiveArtifacts 'target/*.jar'
                    }
                }
            }
        }
    }
    

    pipeline script를 간략하게 알아보자!
    이 파이프라인은 Maven을 사용하여 GitHub에서 소스 코드를 가져와 빌드한 후, 테스트 결과를 기록하고 빌드된 아티팩트를 저장하는 간단한 CI/CD 프로세스를 구현한다.


    • Agent 설정: agent any는 어떤 에이전트에서나 파이프라인을 실행할 수 있음을 의미한다. 에이전트는 빌드를 실행할 수 있는 환경을 제공하는 Jenkins 노드다.
    • 도구 설정: tools 블록은 파이프라인이 사용할 도구를 설정한다. 여기서는 Maven을 사용하며, maven "M3"는 Jenkins의 전역 도구 설정에서 "M3"로 설정된 Maven을 사용한다는 것을 의미한다.
    • 단계 설정: stages 블록은 파이프라인의 단계를 정의한다. 여기서는 단일 단계 "Build"를 정의하였다.
    • 빌드 단계: "Build" 단계는 실제 빌드 작업을 수행한다. 먼저 GitHub 저장소에서 코드를 가져온 후 Maven을 사용하여 프로젝트를 빌드한다. Unix 에이전트에서는 sh 스텝을 사용하여 Maven 명령어를 실행하고, Windows 에이전트에서는 bat 스텝을 사용할 수 있다.
    • 후 처리: post 블록은 단계 실행 후에 추가 작업을 정의한다. 여기서는 Maven 테스트 결과를 기록하고 테스트 결과 XML 파일을 저장한다. 또한 빌드된 JAR 파일을 아카이브한다.
  7. 마지막으로 하단의 Save 버튼을 눌러 파이프라인의 변경 사항을 저장한다.

*Pipeline script VS Pipeline script from SCM
Pipeline script 옵션은 Jenkins UI에서 직접 스크립트를 입력하는 반면, Pipeline script from SCM 옵션은 외부 SCM 시스템에서 스크립트를 가져와 사용한다.

pipeline script
Jenkins에 직접적으로 Pipeline 스크립트를 입력하는 방식이다.

  • 사용자는 Jenkins 대시보드에서 설정하고, Groovy 또는 Declarative Pipeline Syntax를 사용하여 스크립트를 작성한다.
  • 일반적으로 작은 프로젝트나 단일 사용자가 소규모 Pipeline을 작성할 때 유용하다.
  • 스크립트는 Jenkins UI에 직접 입력되므로 외부 버전 관리 시스템(ex: Git)을 사용하지 않는다.

pipeline script from SCM
SCM(Source Code Management) 시스템(ex: Git, Subversion)에서 Pipeline 스크립트를 가져오는 방식이다.

  • 사용자는 소스 코드 저장소에 Pipeline 스크립트를 보관하고 Jenkins는 해당 저장소에서 스크립트를 가져와 실행한다.
  • 여러 사용자 또는 팀이 협업하여 스크립트를 유지 관리해야 하는 경우에 유용하다.
  • 변경 사항 추적, 버전 관리, 코드 리뷰 및 협업을 위해 SCM을 사용할 수 있다.

- 전역 도구 환경 설정 페이지

파이프라인을 실행하기 전에 해야 하는 중요한 일이 바로 전역 도구 환경 설정(Global Tool Configuration) 페이지를 알아보는 것이다!

2018년에 출간된 책이어서 Global Tool Configuration이라고 하지만 현재는 System Configuration의 Tools 페이지가 따로 있다! 참고하도록 하자.

여기서 모든 젠킨스 파이프라인에서 사용될 도구를 설정할 수 있다. Java, Maven, Git 등이 포함된다!

파이프라인을 위해 전역 도구 환경 설정에서 Maven 도구를 설정해보자!

  1. jenkins dashboard -> Manage Jenkins -> System Configuration -> Tools 페이지 클릭

  2. Maven 영역을 찾고, Add Maven 버튼을 클릭한다.

  3. Maven 설치를 위해 Name을 입력한다.

  4. Version 영역에서 최신 메이븐 버전을 선택한다.
    기본적으로 Install from Apache 옵션이 나타날 것이다. 이것은 젠킨스가 메이븐 애플리케이션을 아파치에서 다운로드하게 한다.
    *만약 Add Installer에서 새로운 인스톨러를 선택한다면, Delete Installer 버튼을 클릭해 기존 인스톨러를 삭제한 후 진행하자!

  5. 메이븐 설정을 완료한 후 페이지 하단의 Save 버튼을 클릭한다.
    (메이븐 프로젝트를 빌드하기 위해 자바도 필요하지만, 현재 젠킨스 마스터(JDK가 설치되어 있다)에서 빌드를 진행하기에 자바 설치는 생략할 수 있다!


- 젠킨스 파이프라인 스테이지 뷰

젠킨스 스테이지 뷰는 2.x 릴리스에서 생긴 새로운 기능이다.
(현재 내가 설치한 젠킨스의 버전은 2.426.3이다.)

🫧 젠킨스 스테이지 뷰
파이프라인의 다양한 단계의 진행 상황을 실시간으로 확인할 수 있다.
스테이지 뷰는 젠킨스 파이프라인과 멀티브랜치 파이프라인 잡에서만 동작한다.

예제 파이프라인을 실행해 확인해보자!!!

  1. 젠킨스 대시보드의 All 탭 밑에 방금 만든 파이프라인이 있을 것이다.

  2. 빌드 트리거 아이콘(▶️)을 눌러 파이프라인을 실행한다.
    *그 밖에도 파이프라인 이름 옆을 클릭하면 실행 가능한 드롭다운 메뉴가 아래와 같이 나타난다.

  3. 스테이지 뷰를 보기 위해 파이프라인 이름을 클릭한다.

  4. 스테이지 뷰는 다음과 같다.

  5. 특정한 스테이지의 빌드 로그를 보기 위해, 다양한 색상으로 채워진 상태 박스(status box) 위에 마우스를 올려놓으면 로그를 볼 수 있는 Logs 옵션이 나온다. 이를 누르면 로그를 보여주는 팝업이 뜬다.

  6. 모든 빌드 로그를 보기 위해서는 왼쪽의 Build History를 살펴보자.
    Build History 탭이 실행된 모든 빌드를 보여줄 것이다. 원하는 빌드 번호를 마우스 오른쪽 버튼을 클릭한 후 Console Output을 클릭하자.


내용이 너무 많아 다음 장에서 이어가도록 하겠다.

0개의 댓글