본문 바로가기

cicd

(20)
[Jenkins] 멀티브랜치 파이프라인 무한 증식 브랜치 자동화 우리는 지금까지 단일 파이프라인(Pipeline) Job을 생성하여 빌드하는 법을 배웠습니다. 하지만 현대 소프트웨어 개발은 GIT Flow나 Github Flow를 기반으로, 기능(Feature) 하나를 개발할 때마다 새로운 브랜치를 수십 개씩 파고(Branching) 합치는(Merge) 과정을 밥 먹듯이 반복합니다. 만약 새로운 브랜치가 생성될 때마다 젠킨스 관리자가 웹 UI에 접속해서 "새 잡(Job) 만들기 -> 복사하기 -> 브랜치명 수정" 노가다를 하고 있다면, 그것은 파이프라인이 아니라 수동 라인입니다. 이 포스트에서는 인프라 관리자의 잡(Job) 복제 스트레스를 0으로 만들어버리는 Multibranch Pipeline(다중 브랜치 파이프라인)의 엄청난 자동 발견(Auto Discovery)..
[Jenkins] 젠킨스 워크스페이스 완벽 청소 가이드 (디스크풀 대응) 젠킨스를 도입하여 무중단 자동화 배포 파이프라인의 달콤함을 맛보고 있을 무렵, 보통 서비스 런칭 3개월에서 6개월 차 쯤에 모두가 똑같이 겪게 되는 거대한 재앙이 하나 찾아옵니다. 개발자가 코드를 푸시했는데 젠킨스가 아무런 응답을 하지 않고 뻗어버리는 현상입니다. 황급히 서버에 들어가 로그를 확인해 보면 어김없이 "No space left on device" (디스크 용량 100% 초과)라는 끔찍한 에러가 붉게 물들어 있습니다. 원인은 바로 젠킨스의 작업 공간인 Workspace(워크스페이스) 관리에 실패했기 때문입니다. 이 글에서는 인프라 관리자의 수명을 갉아먹는 이 고질적인 문제를 원천 봉쇄하고, Workspace Cleanup 플러그인을 활용하여 항상 쾌적하고 깔끔한 서버 환경을 유지하는 실무 최적..
[Jenkins] When 조건문으로 스테이지 완벽 제어하기 동적 파이프라인 구축 파이프라인 매개변수(Parameters)를 통해 외부에서 동적인 값을 주입받는 방법을 익혔다면, 이제 그 값에 따라 파이프라인의 물줄기를 요리조리 바꾸는 방법을 알아야 합니다. 만약 매개변수 설정만 해두고 if-else 문 같은 로직 분기를 태우지 않는다면 매개변수는 그저 화면에 찍히는 의미 없는 문자에 불과합니다.본 글에서는 Declarative Pipeline의 꽃이자, 하나의 파일로 수십 가지의 배포 시나리오를 감당하게 해주는 강력한 무기인 'when' 조건문의 완벽한 활용법과 다양한 실무 예제들을 다뤄보겠습니다. 이 글을 마스터하시면 더 이상 브랜치별로 수많은 잡(Job)을 복사/붙여넣기 하는 고통에서 영원히 해방될 수 있습니다.1. 왜 if-else 문을 쓰지 않고 when을 쓰는가?과거 Scr..
[Jenkins] Pipeline의 시작 Scripted vs Declarative 문법 완벽 가이드 과거의 젠킨스는 '마우스 클릭'으로 모든 것을 설정하는 Freestyle Project가 주류였습니다. 하지만 마이크로서비스 아키텍처(MSA)가 도입되고 배포 파이프라인이 수십 개의 스테이지로 복잡해지면서, 더 이상 GUI 화면만으로는 분기 처리나 예외 처리 같은 고도화된 로직을 감당할 수 없게 되었습니다. 그래서 등장한 것이 바로 '코드로 파이프라인을 작성(Pipeline as Code)'하는 방식입니다.본 가이드에서는 젠킨스 파이프라인 구축의 기초부터 실무 핵심 요소인 1) Scripted vs Declarative 문법 비교, 2) Jenkinsfile을 활용한 형상 관리(IaC), 3) Docker 기반 격리 에이전트(Agent) 설정, 4) 보안 자격 증명(Credentials)과 환경변수(En..
[Jenkins] Freestyle Project로 첫 자동화 빌드 만들기 초보자 완벽 가이드 젠킨스를 설치하고 Github Webhook 연동까지 마쳤다면, 드디어 젠킨스에게 "실제로 어떤 일을 해야 하는지" 작업 명세서를 쥐어줄 차례입니다. 젠킨스에서 작업을 정의하는 방식은 크게 'Freestyle Project(자유 스타일 프로젝트)'와 'Pipeline(파이프라인)' 두 가지로 나뉩니다. 코드로 모든 것을 제어하는 파이프라인이 최신 실무 표준이긴 하지만, 젠킨스의 동작 원리와 플러그인의 결합 방식을 시각적으로 이해하기 위해서는 가장 기본적이고 직관적인 Freestyle Project를 먼저 마스터하는 것이 필수적입니다. 이번 포스팅에서는 마우스 클릭 몇 번과 쉘 스크립트 작성만으로 완벽한 자동화 빌드를 구성하는 방법에 대해 다뤄보겠습니다.1. Freestyle Project란 무엇이며, 언..
[Jenkins] Github Webhook과 Jenkins 연동 완전 자동화의 꽃 개발자가 로컬에서 기능 개발을 마치고 Github에 코드를 푸시(Push)했을 때, 사람이 젠킨스 웹 화면에 일일이 로그인해서 "Build Now(지금 빌드)" 버튼을 누른다면 그것은 진정한 의미의 자동화가 아닙니다. 반쪽짜리 CI(Continuous Integration)일 뿐이죠. 이번 Github Webhook과 Jenkins의 완벽 연동 메커니즘에 대하여 다뤄보겠습니다. 실무에서 가장 빈번하게 발생하는 방화벽 및 네트워크 트러블슈팅 사례까지 낱낱이 파헤쳐 드립니다.1. Webhook(웹훅)의 동작 원리 완벽 이해하기웹훅(Webhook)은 두 개의 시스템이 비동기적으로 실시간 통신을 하기 위해 고안된 아키텍처입니다. 기존의 폴링(Polling) 방식은 젠킨스가 1분마다 Github에 "혹시 새로운 ..
[Jenkins] 관리자 계정 생성 및 권한 분리 보안 마스터 가이드 인프라 구축 초기에는 보통 최고 관리자(admin) 계정 하나로 모든 개발자가 돌려 쓰는 경우가 많습니다."우리는 작은 스타트업이라 괜찮아"라고 생각할 수 있지만, 팀 규모가 커지고 다양한 프로젝트가 맞물리기 시작하면 이는 시한폭탄과 다름없습니다. 누군가 실수로 다른 팀의 빌드 설정을 지워버리거나, 인턴 개발자가 실수로 운영 서버 배포 버튼을 눌러버리는 대형 사고(Human Error)가 발생하기 때문입니다. 대규모 엔터프라이즈 환경에서 필수적으로 적용하는 Role-based Authorization(역할 기반 권한 관리) 전략을 통해 완벽한 보안 환경을 구축하는 방법을 다뤄보겠습니다.1. 왜 권한 분리(Authorization Strategy)가 필수적인가?Jenkins는 기본적으로 코드를 클론(Clo..
[Jenkins] 초기 비밀번호 확인 및 기본 플러그인 설정 완벽 가이드 앞선 포스팅을 통해 Docker Compose를 활용하여 Jenkins 인프라를 성공적으로 띄우셨다면, 이제 본격적으로 젠킨스의 세계에 발을 들여놓을 차례입니다. 브라우저 주소창에 `http://서버IP:8080` 혹은 설정한 도메인을 입력하고 접속해 보십시오. 아마 친절한 환영 인사나 대시보드 대신, 누군가 침입하는 것을 막기 위해 자물쇠가 굳게 채워진 Unlock Jenkins 화면이 여러분을 당황하게 만들 것입니다. 초기 비밀번호 확인 방법부터 필수 플러그인 설치, 그리고 첫 관리자 계정 생성까지의 전체 셋업 워크플로우를 실무 꿀팁과 함께 아주 꼼꼼하게 파헤쳐 보겠습니다. 이 과정을 무사히 넘겨야만 비로소 파이프라인을 구축할 수 있는 권한을 얻게 됩니다.1. Unlock Jenkins: 초기 관리자..
[Jenkins] 도커로 젠킨스 5분 만에 설치하기 CI/CD 파이프라인의 중심이자 가장 널리 쓰이는 오픈소스 자동화 서버인 Jenkins를 처음 도입하기로 결정하셨다면, 가장 먼저 마주하는 난관은 바로 "어떻게 설치하고 세팅할 것인가"입니다. 운영 서버나 개발자의 로컬 PC에 직접 설치하는 방법도 있지만, 최근 클라우드 네이티브(Cloud Native) 환경과 컨테이너 기술의 발달로 인해 설치 패러다임이 완전히 바뀌었습니다. 본 글에서는 현재 IT 업계에서 가장 강력하게 권장되는 표준 방식인 Docker와 Docker Compose를 활용하여 Jenkins를 단 5분 만에 완벽하게 설치하고 격리된 환경을 구축하는 방법에 대하여 아주 상세하고 깊이 있게,이 글을 정독하시면 단순한 설치를 넘어 컨테이너 인프라의 핵심 동작 원리까지 마스터하실 수 있습니다.1..
[Jenkins] 젠킨스 입문 현대 소프트웨어 개발 생태계에서 가장 중요한 화두를 하나 꼽으라면 단연코 '어떻게 하면 더 빠르고 안전하게 배포할 것인가'일 것입니다. 과거에는 코드를 작성하는 개발 시간 자체가 중요했다면, 이제는 작성된 코드를 사용자에게 전달하기까지의 병목을 줄이는 딜리버리(Delivery) 과정의 혁신이 기업의 경쟁력을 좌우하고 있습니다. Jenkins 입문: CI/CD의 중심에 대하여 상세한 개념, 아키텍처, 실무 도입 배경, 그리고 다른 도구들과의 비교까지 매우 깊이 있게 다룹니다. 이 글을 끝까지 읽으신다면, 단순한 툴 사용법을 넘어 왜 Jenkins가 업계 표준으로 자리 잡았는지 완벽하게 이해하실 수 있을 것입니다.1. CI/CD(지속적 통합/지속적 배포)의 진정한 의미와 필요성IT 업계에 종사하다 보면 CI..