흔한 QA 엔지니어

Git 기반 테스트 자동화 파이프라인 구축 with Docker #2 본문

Containers/Docker

Git 기반 테스트 자동화 파이프라인 구축 with Docker #2

블로그 닉네임 입력 제한 수는 몇 자인가요? 2025. 5. 7. 17:53

 

 

Git 기반 테스트 자동화 파이프라인 구축 with Jenkins #1

Git Push 기반 자동화 파이프라인은테스트 자동화의 시작점을 단순화하고,코드 변경 → 테스트 → 피드백까지의 흐름을 자동으로 연결함으로써효율적인 테스트 및 품질 관리 기반을 만들어줍니

happyqa.tistory.com

해당 게시글과 이어집니다 

 

Windows PC에서 Docker Desktop을 사용하여 Jenkins를 컨테이너로 실행해보겠습니다.
Jenkins 서버의 Host OS는 Windows, 컨테이너 내부는 Ubuntu 기반입니다.

 Jenkins는 Katalon 테스트 자동화의 중심 서버 역할을 하며, 
Git 저장소(트리거)와 JNLP 에이전트를 통해 테스트를 자동 실행합니다.

 

1. Docker란

Docker는 리눅스 컨테이너 기술(Linux Containers, LXC)을 바탕으로,
애플리케이션을 경량 가상 환경에서 실행할 수 있게 해주는 오픈소스 플랫폼입니다.

도커에서는 컨테이너와 이미지라는 개념을 이해하는 것이 중요합니다.

컨테이너 - 이미지를 실행한 인스턴스격리된 공간에서 작동
이미지 - 컨테이너 실행에 필요한 읽기 전용 파일 시스템. 애플리케이션 + 설정 +종속성을 포함,
Dockerfile 내 스크립트를 정의하여 이미지를 생성


요약하면
1. Dockerfile 내 스크립트를 정의하여 이미지 생성
2. 이미지를 사용해 컨테이너 실행

심지어 Jenkins 이미지를 생성하기 위한 Dockerfile은 
스크립트 정의 필요없이 다운로드 후 pull로 실행만 하면 됩니다!

 

2. WSL 2(Windows Subsystem for Linux) 활성화 및 Ubuntu 설치

Windows에서 리눅스 커널을 실행할 수 있도록 해주는 기능입니다.
Windows용 Docker Desktop은 WSL 2를 이용해 리눅스 기반 컨테이너를 실행하므로 반드시 필요합니다.
WSL 1의 경우 호환성 이슈가 있으니 WSL 2로 업데이트해주세요.

1) PowerShell 관리자 권한으로 실행

2) WSL 기능 활성화

3) 가상머신 플랫폼 활성화

4) 리눅스 커널 업데이트 설치

5) 기본 WSL 버전을 2로 설정

6) Microsoft Store에서 Ubuntu 설치

7) 설치 확인!
VERSION은 2로 나와야합니다.

// 1. WSL 기능 활성화
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

// 2. 가상머신 플랫폼 활성화
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

// 3. 기본 WSL 버전을 2로 설정
wsl --set-default-version 2

// 4. 설치 확인
wsl -l -v

 

3. Docker Desktop 설치

환경에 맞게 선택 후 설치해줍니다.

 

4. Docker Desktop 내 터미널 활성화
CMD / PowerShell을 Docker Desktop에서 사용 가능합니다.

 

5. Docker Hub 에서 Docker image 다운로드
Jenkins Dockerfile은  스크립트 정의 필요없이 Docker Hub에서 다운로드만 하면 됩니다.
Jenkins 공식 Github 레포지토리 가이드 문서를 참고하여 Docker Hub에서 검색해줍니다.

해당 이미지 파일은 Ubuntu + Java 11 + Jenkins가 포함된 안정화 버전입니다.

명령어 카피 후 사용만 하면 됩니다.
다운로드를 받고나면
이미지가 생성된 것을 확인할 수 있습니다.

 

6. Docker Container 생성

Container name : jenkins
Jenkins UI 포트 : 8181
JNLP Agent : 50000
Volumes Host path : C:\jenkins-docker\jenkins_home
Container Path : /var/jenkins_home

Volume Host path는 호스트 PC의 해당 경로에 볼륨으로 마운트해야
지속적으로 사용이 가능하니 꼭 설정해주세요.
실행하면 폴더는 자동으로 생성됩니다.

Run 클릭하면
로그에서 오류 발생하지 않는지 확인 후
8181 포트가 정상적으로 뜬 것을 확인!

 

해당 과정은 명령어로 입력해도 가능합니다.

docker run -d \
  -p 8181:8080 -p 50000:50000 \
  -v C:\jenkins-docker\jenkins_home:/var/jenkins_home \
  --name jenkins \
  jenkins/jenkins:lts-jdk11

 

7. Jenkins 서버 초기 설정

1) CMD로 초기 비밀번호 확인

2) Jenkins 내 초기 비밀번호 입력

위에서 확인한 값 입력

3) 플러그인 설치
우선은 일반적으로 많이 사용하는 플러그인들을 설치해줍니다.

4) 초기 설정 완료

플러그인 설명
Folders 폴더 구조로 Job을 정리 예: 프로젝트 별로 Job 구분
OWASP Markup Formatter Jenkins UI에서 사용자 입력/출력에 XSS 보안 필터링 적용. 보안 강화용
Build Timeout 빌드가 일정 시간 이상 걸릴 경우 자동으로 중단. 무한 대기 방지용
Credentials Binding Jenkins Job에서 Git 인증 정보, 토큰, 비밀번호 등을 안전하게 변수로 사용 가능
Timestamper 빌드 로그에 시간 정보를 추가해서 디버깅 편의성 향상
Workspace Cleanup 빌드 전/후로 작업 디렉토리를 자동 정리. 중복 실행 시 깨끗한 환경 보장
Ant Apache Ant 빌드 툴 연동 지원. 현재는 주로 레거시 Java 프로젝트에서 사용
Gradle Gradle 기반 Java 프로젝트 빌드 지원. CLI 없이 Jenkins에서 실행 가능
Pipeline Jenkins Declarative Pipeline 및 Scripted Pipeline 사용 가능하게 해주는 핵심 플러그인
GitHub Branch Source GitHub 저장소에서 브랜치별로 자동 빌드 Job 생성. 멀티브랜치 파이프라인에 필수
Pipeline: GitHub Groovy Libraries GitHub에 저장된 Groovy 스크립트를 공통 파이프라인 라이브러리로 사용 가능
Pipeline Graph View 파이프라인 실행 결과를 순서도로 시각화. 직관적 디버깅에 유용
Git Git 저장소 사용을 가능하게 함. Jenkins에서 Git 클론/푸시 등을 수행
SSH Build Agents 원격 서버를 SSH로 연결해서 Jenkins 에이전트로 사용할 수 있게 해줌
Matrix Authorization Strategy 사용자/그룹에 대해 세부적인 권한 제어 설정 가능 (예: 읽기만 허용)
PAM Authentication Linux PAM 기반 인증 연동 (Ubuntu, CentOS 사용자 인증 등). 보통 회사 LDAP 인증과 함께 사용
LDAP 사내 LDAP 서버와 연동하여 Jenkins 로그인 인증 처리 가능. 기업 환경에서 필수
Email Extension 빌드 성공/실패 시 커스터마이징된 이메일 알림 전송 가능
Mailer 기본적인 이메일 전송 기능 (Email Extension과 보완적 관계)
Dark Theme Jenkins UI를 다크모드로 변경하는 테마 플러그인. 개발자 친화적 UI 제공

 

다음에는 Jenkins와 git repo를 연동해보겠습니다.