소개
Jenkins 빌드는 결과를 게시할 때 그 상태를 파악하기가 훨씬 수월합니다. 테스트 리포트는 어떤 테스트가 통과했고 실패했는지 보여주며, 알림 기능은 팀이 주의가 필요한 빌드를 즉시 인지할 수 있도록 돕습니다.
이번 실습에서는 Jenkins 대시보드를 사용하여 Freestyle 잡을 생성하고, 간단한 JUnit XML 리포트를 생성한 뒤, 이를 Jenkins 테스트 리포트로 게시합니다. 또한 이메일 알림 수신자를 설정하고, 테스트 실패가 포함된 두 번째 빌드를 실행해 봅니다.
JUnit XML 을 생성하는 잡 만들기
이 단계에서는 JUnit XML 파일을 작성하는 Jenkins Freestyle 잡을 생성합니다. JUnit XML 은 테스트 데이터가 간단한 셸 스크립트에서 생성되더라도 Jenkins 가 읽을 수 있는 일반적인 리포트 형식입니다.
데스크톱 인터페이스를 엽니다. Firefox 가 자동으로 Jenkins 를 엽니다. 만약 열리지 않는다면 http://localhost:8080으로 접속하세요.
Jenkins 대시보드에서:
New Item을 클릭하고 test-report-demo를 입력한 뒤, Freestyle project를 선택하고 OK를 클릭합니다.
구성 페이지에서 Build Steps 섹션으로 스크롤하여 Add build step을 클릭하고 Execute shell을 선택합니다.
Command 상자에 다음 셸 스크립트를 입력합니다:
mkdir -p reports
printf '%s\n' \
'<testsuite name="LabExSuite" tests="2" failures="0" skipped="0">' \
' <testcase classname="demo.HealthTest" name="test_home_page"/>' \
' <testcase classname="demo.HealthTest" name="test_api_status"/>' \
'</testsuite>' > reports/junit.xml
echo "Generated passing JUnit report"
Save를 클릭합니다.
저장 후 잡 페이지가 열립니다.

터미널에서 다음 명령어를 실행하여 저장된 셸 단계를 기록합니다:
docker exec jenkins sh -lc "grep -n -E 'reports/junit.xml|Generated passing JUnit report' /var/jenkins_home/jobs/test-report-demo/config.xml" | tee /home/labex/project/test-report-job-config.txt
JUnit 테스트 결과 리포트 게시하기
이 단계에서는 JUnit XML 파일을 게시하는 빌드 후 조치 (Post-build action) 를 추가합니다. 빌드 단계는 빌드 중에 파일을 생성하고, 빌드 후 조치는 빌드가 완료된 후 파일을 처리합니다.
test-report-demo 잡 페이지에서 Configure를 클릭합니다.
Post-build Actions 섹션으로 스크롤하여 Add post-build action을 클릭하고 Publish JUnit test result report를 선택합니다.
Test report XMLs 필드에 다음을 입력합니다:
reports/junit.xml
Save를 클릭합니다.

다음 명령어를 실행하여 저장된 JUnit 게시 설정을 기록합니다:
docker exec jenkins sh -lc "grep -n -E 'JUnitResultArchiver|<testResults>reports/junit.xml</testResults>' /var/jenkins_home/jobs/test-report-demo/config.xml" | tee /home/labex/project/junit-publisher-lines.txt
출력 내용에 JUnitResultArchiver와 reports/junit.xml이 모두 포함되어 있어야 합니다.
빌드 실행 및 테스트 결과 확인하기
이 단계에서는 잡을 실행하고 게시된 테스트 리포트를 확인합니다. 첫 번째 리포트에는 두 개의 통과된 테스트가 포함되어 있으므로, Jenkins 는 빌드를 성공으로 표시해야 합니다.
test-report-demo 잡 페이지에서 Build Now를 클릭합니다.
빌드 기록에 #1이 나타나면 해당 빌드를 열고 Test Result를 클릭합니다.
테스트 결과 페이지에 실패 건수가 0 으로 표시되고 demo 패키지가 나열되어야 합니다.

터미널에서 다음 명령어를 실행하여 검증을 위한 결과 데이터를 저장합니다:
curl -fsS http://localhost:8080/job/test-report-demo/1/api/json | grep '"result":"SUCCESS"' | tee /home/labex/project/passing-test-result.txt
curl -fsS http://localhost:8080/job/test-report-demo/1/testReport/api/json | grep '"failCount":0' | tee -a /home/labex/project/passing-test-result.txt
다음과 같은 결과가 출력되어야 합니다:
"result":"SUCCESS"
"failCount":0
빌드 알림 수신자 추가하기
이 단계에서는 Jenkins 이메일 알림 수신자를 추가합니다. 실제 운영 환경의 컨트롤러에서는 메일을 보내기 전에 SMTP 설정이 필요합니다. 이번 실습에서는 잡이 알림 수신자를 어디에 저장하는지 파악하는 것이 핵심입니다.
test-report-demo 잡 페이지에서 Configure를 클릭합니다.
Post-build Actions 섹션으로 스크롤하여 Add post-build action을 클릭하고 E-mail Notification을 선택합니다.
Recipients 필드에 다음을 입력합니다:
dev-team@example.com
Save를 클릭합니다.

다음 명령어를 실행하여 저장된 알림 설정을 기록합니다:
docker exec jenkins sh -lc "grep -n -E 'hudson.tasks.Mailer|dev-team@example.com' /var/jenkins_home/jobs/test-report-demo/config.xml" | tee /home/labex/project/mail-notification-lines.txt
출력 내용에 Jenkins 메일러 게시자와 수신자 주소가 포함되어 있어야 합니다.
테스트 실패 유도 및 재빌드하기
이 단계에서는 JUnit 리포트에 하나의 실패한 테스트가 포함되도록 셸 단계를 업데이트합니다. Jenkins 는 JUnit 테스트가 실패한 빌드를 UNSTABLE로 표시하며, 이는 팀 알림을 통해 강조되어야 할 빌드 결과입니다.
test-report-demo 잡 페이지에서 Configure를 클릭합니다.
Execute shell 빌드 단계를 찾습니다. 명령어를 다음의 실패 리포트 내용으로 교체합니다:
mkdir -p reports
printf '%s\n' \
'<testsuite name="LabExSuite" tests="2" failures="1" skipped="0">' \
' <testcase classname="demo.HealthTest" name="test_home_page"/>' \
' <testcase classname="demo.HealthTest" name="test_api_status">' \
' <failure message="API returned 500">simulated failure</failure>' \
' </testcase>' \
'</testsuite>' > reports/junit.xml
echo "Generated failing JUnit report"
Save를 클릭한 후 Build Now를 클릭합니다.
빌드 #2가 나타나면 해당 빌드를 열고 Test Result를 클릭합니다. 페이지에 하나의 실패한 테스트가 표시되어야 합니다.

다음 명령어를 실행하여 불안정한 빌드 증거를 저장합니다:
curl -fsS http://localhost:8080/job/test-report-demo/2/api/json | grep '"result":"UNSTABLE"' | tee /home/labex/project/unstable-test-result.txt
curl -fsS http://localhost:8080/job/test-report-demo/2/testReport/api/json | grep '"failCount":1' | tee -a /home/labex/project/unstable-test-result.txt
다음과 같은 결과가 출력되어야 합니다:
"result":"UNSTABLE"
"failCount":1
요약
대시보드에서 Jenkins Freestyle 잡을 생성하고, JUnit XML 을 생성하여 빌드 후 조치로 게시했으며, 통과 및 실패한 테스트 리포트를 확인하고, 해당 잡에 대한 이메일 알림 수신자를 설정하는 방법을 실습했습니다.