Jenkins 파이프라인 : Pipeline Script와 SCM 방식 비교

DevBadger·2026년 1월 20일

Jenkins

목록 보기
4/6
post-thumbnail

젠킨스 파이프라인은 CI/CD 프로세스를 코드로 정의하는 기능입니다. 이전글에서 설명한 것 처럼 GitHub Webhook 등의 이벤트가 발생하면 젠킨스가 자동으로 해당 파이프라인 코드를 실행합니다.
Jenkins에서 파이프라인을 생성할 때 보면 두 가지 옵션이 있습니다. 바로 Pipeline Script from SCM과 Pipeline Script입니다. 이번 글에서는 이 두 방식의 차이와 사용 방법을 살펴보겠습니다.

Pipeline Script 방식

Pipeline Script 방식은 Jenkins 서버 내부에서 직접 스크립트를 작성해 실행하는 방식입니다. Jenkins UI에서 Pipeline Script를 선택하면 스크립트를 작성할 수 있는 편집기가 나타납니다.

이 방식은 설정이 간단해 빠르게 테스트할 수 있다는 장점이 있지만, 실제 운영 환경에서는 여러 단점 때문에 잘 사용되지 않습니다. 따라서 소규모 테스트나 프로토타입 환경에서 주로 활용됩니다.

장점

  • 설정이 간단하고 빠르게 작성할 수 있습니다.
  • 간단한 테스트용 파이프라인을 구성하기 좋습니다.

단점

  • 버전 관리가 불가능하여 스크립트를 수동으로 백업해야 합니다.
  • 협업 중 UI에서 충돌이 발생할 수 있습니다.
  • 스크립트가 Jenkins 서버 내부에 노출되어 보안 위험이 있습니다.
  • 프로젝트 코드를 빌드하려면 스크립트에서 직접 git pull 등을 수행해야 합니다.

Pipeline Script from SCM

Pipeline Script 방식의 단점을 보완할 수 있는 것이 바로 SCM(Source Control Management) 방식입니다.

SCM(Source Control Management) 개념

SCM은 소스 코드 버전 관리 시스템을 의미합니다. Git과 같은 저장소에서 소스 코드를 가져와(checkout) 그 안에 정의된 Jenkinsfile을 실행합니다. 다음과 같은 기능을 제공합니다.

  • 변경 이력 추적 : 누가 언제 어떤 파일을 수정했는지 기록합니다.
  • 동시 작업 관리 : 저장소의 파일을 가져오기 때문에 중복 파일 수정 시에도 충돌을 해결할 수 있습니다.
  • 브랜치/분기 관리 : 기능 개발, 버그 수정, 릴리스별 브랜치를 두어 독립 작업이 가능합니다.
  • 롤백 및 복구 : 문제가 생기면 이전 버전으로 되돌릴 수 있습니다.

저장소 기반의 관리이기 때문에 파이프라인 운영이나 협업 환경에서 높은 확장성을 가질 수 있습니다.

장점

  • 형상 관리 & 이력 추적 :
    Jenkinsfile이 Git에 있으므로 commit/PR 단위로 변경 이력을 추적할 수 있고, 문제가 생기면 이전 버전으로 롤백하기 쉽습니다.
  • 브랜치/PR별 파이프라인 :
    feature/*, develop, main 등 브랜치마다 다른 Jenkinsfile을 두거나 조건 분기를 넣어 브랜치 전략에 맞는 빌드·배포 흐름을 구성할 수 있습니다.
  • 협업과 코드 리뷰 :
    파이프라인 변경도 Git 저장소의 Rules를 따르기에 PR 리뷰, 리뷰 승인 등의 분기 조건을 걸 수 있으므로 실수로 인한 배포 사고를 줄일 수 있습니다.
  • Jenkins 서버와의 결합도 감소 :
    스크립트가 Jenkins UI나 디스크에 종속되지 않아, 서버를 교체하거나 재설치하더라도 저장소만 연결하면 기존 설정을 그대로 복구할 수 있습니다.

단점

  • 초기 설정 복잡도 :
    위의 장점을 다 갖추기 위해서 Git 연동, Credentials, 브랜치 규칙 설정 등 초기 세팅이 다소 복잡합니다.
  • SCM 가용성 의존 :
    Git 서버 장애나 네트워크 문제로 저장소를 체크아웃하지 못하면 파이프라인 전체가 실패합니다.

따라서 초기에 한 번 제대로 설정하는 것이 중요하며, 실패 시 전체 중단에 대비한 Fallback 전략이 필요합니다.

SCM 세팅 방법

Jenkins UI에서 Pipeline에서 Definition을 Pipeline Script from SCM으로 설정하면 다음과 같은 설정창이 나옵니다.

  • Repository URL : Git 저장소 주소를 작성하시면 됩니다.
  • Credentials : Git 저장소를 인증하기 위한 토큰이라 생각하시면 됩니다.
    (ADD 버튼을 통해 새 Credentials를 생성할 수 있습니다.)

GitHub Credentails을 만들기 위해서는 아래와 같이 작성합니다.

  • kind : Username with password를 선택
  • Scope : "Global"은 모든 프로젝트, "System"은 Jenkins 시스템 전용으로 사용 가능
  • Username : GitHub 사용자명
  • Password : GitHub Access Token 입력
  • ID : Pipeline 스크립트 내부에서 Credentials가 필요한 경우 credentialsId: 'github-creds' 처럼 자격 증명이 가능합니다.
  • Description : 해당 Credentails 에 대한 설명 작성

위 과정을 마치면 Jenkins 모든 파이프라인이 작성되었습니다. 이제 Jenkinsfile로 Script만 작성하면 CI/CD를 구축할 수 있습니다. 다음에 React부터 Spring Boot, FastAPI 프로젝트를 젠킨스 자체 빌드하여 SSH로 전송 후 원격 실행하는 방식으로 순차적으로 알아보겠습니다.

profile
개발 오소리

0개의 댓글