일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- PKI
- JIRA
- 지라
- github
- 공동인증서
- Katalon
- 테스트
- CA
- 자동화테스트
- openssl
- 앱테스트자동화
- 개인키
- testautomation
- CD
- 테스트자동화
- 인증서
- ci/cd
- appium
- katalonstudio
- 테스트케이스
- 카탈론스튜디오
- 카탈론
- sqa
- CI
- confluence
- jenkins
- 공개키
- 보안
- QA
- Git
- Today
- Total
흔한 QA 엔지니어
Git 기반 테스트 자동화 파이프라인 구축 with Docker #2 본문
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의 해당 경로에 볼륨으로 마운트해야
지속적으로 사용이 가능하니 꼭 설정해주세요.
실행하면 폴더는 자동으로 생성됩니다.



해당 과정은 명령어로 입력해도 가능합니다.
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를 연동해보겠습니다.