범위 보고 통합 개요
자동화된 Java 프로젝트를 위해 Jenkins와 Extent Reporting을 통합하면 지속적인 통합 환경에 중요한 테스트 결과의 가시성이 향상됩니다. 이 설정에는 일반적으로 SureFire를 통해 관리되는 TestNG, Maven 및 Extent Reporter가 포함되어 야간 빌드 및 자세한 보고가 가능합니다.
그러나 일반적인 과제는 Jenkins 이메일 알림에 포함하기 위해 Extent Reporter HTML 대시보드에서 테스트 횟수 및 합격/실패 비율과 같은 특정 데이터를 추출하는 것입니다. 이를 위해서는 자동 배포를 위해 HTML 콘텐츠에서 이러한 세부 정보를 효과적으로 구문 분석하는 스크립트나 방법이 필요합니다.
| 명령 | 설명 |
|---|---|
| groovy.json.JsonSlurper | Groovy에서 JSON 형식 데이터를 구문 분석하여 JSON 파일 또는 응답의 데이터 처리를 용이하게 하는 데 사용됩니다. |
| new URL().text | 새 URL 객체를 생성하고 콘텐츠를 웹 리소스에서 직접 데이터를 읽는 데 일반적으로 사용되는 텍스트로 가져옵니다. |
| jenkins.model.Jenkins.instance | 현재 실행 중인 Jenkins 인스턴스에 액세스하여 작업 구성 및 설정을 조작할 수 있는 싱글톤 패턴입니다. |
| Thread.currentThread().executable | Jenkins 스크립트 파이프라인에서 현재 실행 중인 빌드 또는 작업에 대한 참조를 가져오는 데 사용되며, 종종 동적 처리를 위해 사용됩니다. |
| hudson.util.RemotingDiagnostics | 주로 스크립트 내에서 진단 목적으로 사용되는 원격 Jenkins 노드에서 Groovy 스크립트를 실행할 수 있습니다. |
| Transport.send(message) | 알림 시스템에 필수적인 스크립트로 준비된 이메일 메시지를 보내는 데 사용되는 JavaMail API의 일부입니다. |
스크립트 구현 설명
제공된 스크립트는 Jenkins의 Extent Reports에서 테스트 데이터 추출을 자동화하고 지속적인 통합 피드백 루프의 일부로 이 데이터를 이메일을 통해 전송하도록 설계되었습니다. 첫 번째 중요한 명령은 groovy.json.JsonSlurper이는 Jenkins 환경 내에서 JSON 데이터를 구문 분석하는 데 필수적입니다. 이를 통해 스크립트는 JSON 응답 또는 파일을 효율적으로 처리할 수 있으며, Extent Reports에서 JSON 형식의 테스트 결과를 추출하는 데 중요합니다. 사용되는 또 다른 주요 명령은 다음과 같습니다. new URL().text, Jenkins에서 호스팅되는 Extent Reports의 HTML 보고서에 액세스합니다. 이 명령은 HTML 콘텐츠를 일반 텍스트로 가져오므로 스크립트가 총 테스트, 통과 및 실패한 테스트와 같은 필요한 데이터를 스크랩할 수 있습니다.
데이터 추출은 정규식을 사용하여 HTML 텍스트에서 특정 패턴을 찾아 전체 테스트, 통과 및 실패한 테스트와 관련된 숫자를 식별함으로써 추가로 관리됩니다. 그만큼 jenkins.model.Jenkins.instance 그런 다음 명령을 사용하여 현재 Jenkins 인스턴스를 참조합니다. 이는 다양한 작업 세부 정보를 가져오고 프로그래밍 방식으로 설정을 구성하는 데 필요합니다. 데이터 추출 후 스크립트는 다음을 사용합니다. 삼 JavaMail API에서 구성된 이메일을 보냅니다. 이 명령은 추출된 테스트 결과가 포함된 이메일 알림을 보내는 데 중요하며, 이해관계자가 이메일을 통해 직접 최신 테스트 결과로 업데이트되도록 보장하여 개발 주기에서 의사소통 및 응답 시간을 향상시킵니다.
Jenkins의 범위 보고서에서 데이터 추출
Jenkins 파이프라인을 위한 Java 및 Groovy 스크립팅
import hudson.model.*import hudson.util.RemotingDiagnosticsimport groovy.json.JsonSlurperdef extractData() {def build = Thread.currentThread().executabledef reportUrl = "${build.getProject().url}${build.number}/HTML_20Report/index.html"def jenkinsConsole = new URL(reportUrl).textdef matcher = jenkinsConsole =~ "<span class=\\"param_name\\">\\s*Total Tests:\\s*</span>(\\d+)</br>"def totalTests = matcher ? Integer.parseInt(matcher[0][1]) : 0matcher = jenkinsConsole =~ "<span class=\\"param_name\\">\\s*Passed Tests:\\s*</span>(\\d+)</br>"def passedTests = matcher ? Integer.parseInt(matcher[0][1]) : 0matcher = jenkinsConsole =~ "<span class=\\"param_name\\">\\s*Failed Tests:\\s*</span>(\\d+)</br>"def failedTests = matcher ? Integer.parseInt(matcher[0][1]) : 0return [totalTests, passedTests, failedTests]}def sendEmail(testResults) {def emailExt = Jenkins.instance.getExtensionList('hudson.tasks.MailSender')[0]def emailBody = "Total Tests: ${testResults[0]}, Passed: ${testResults[1]}, Failed: ${testResults[2]}"emailExt.sendMail(emailBody, "jenkins@example.com", "Test Report Summary")}def results = extractData()sendEmail(results)
Jenkins에서 이메일 알림을 향상시키는 스크립트
Jenkins 빌드 후 작업에서 Groovy 활용
import groovy.json.JsonSlurperimport jenkins.model.Jenkinsimport javax.mail.Messageimport javax.mail.Transportimport javax.mail.internet.InternetAddressimport javax.mail.internet.MimeMessagedef fetchReportData() {def job = Jenkins.instance.getItemByFullName("YourJobName")def lastBuild = job.lastBuilddef reportUrl = "${lastBuild.url}HTML_20Report/index.html"new URL(reportUrl).withReader { reader ->def data = reader.textdef jsonSlurper = new JsonSlurper()def object = jsonSlurper.parseText(data)return object}}def sendNotification(buildData) {def session = Jenkins.instance.getMailSession()def message = new MimeMessage(session)message.setFrom(new InternetAddress("jenkins@example.com"))message.setRecipients(Message.RecipientType.TO, "developer@example.com")message.setSubject("Automated Test Results")message.setText("Test Results: ${buildData.totalTests} Total, ${buildData.passed} Passed, ${buildData.failed} Failed.")Transport.send(message)}def reportData = fetchReportData()sendNotification(reportData)
Jenkins를 통한 자동 보고 기능 향상
Extent Reports를 사용하여 Jenkins 내에서 자동화된 데이터 추출 및 이메일 알림을 구현하면 CI(지속적 통합) 프로세스가 크게 최적화됩니다. 이 방법론은 시기적절한 업데이트를 보장할 뿐만 아니라 이해관계자에게 즉각적인 테스트 결과를 제공함으로써 사전 예방적인 문제 해결을 촉진합니다. 이 프로세스는 Jenkins의 기능을 활용하여 밤새 자동화된 테스트를 예약하고 실행한 다음 구문 분석하여 Extent Reporter가 생성한 HTML 보고서에서 직접 총 테스트 수, 통과 및 실패와 같은 주요 지표를 추출합니다.
이러한 자동화된 추출 및 보고는 민첩한 개발 환경에 필수적인 피드백 메커니즘을 간소화합니다. Extent Reports를 Jenkins와 통합함으로써 팀은 지속적인 모니터링과 평가를 통해 테스트 결과를 더 잘 관리하고 높은 수준의 코드 품질을 유지할 수 있습니다. 이러한 작업은 효율적인 개발 파이프라인을 유지하고 모든 팀 구성원이 최신 테스트 결과 및 프로젝트 상태에 부합하도록 보장하는 데 중요합니다.
Jenkins 보고 통합에 대한 일반적인 질문
- 빌드 후 이메일을 보내도록 Jenkins를 어떻게 구성합니까?
- 이메일 알림 옵션을 사용하여 작업 구성의 빌드 후 작업에서 이를 구성할 수 있습니다.
- Jenkins의 맥락에서 범위 보고서란 무엇입니까?
- Extent Reports는 자동화된 테스트에 대한 자세한 대화형 보고서를 제공하고 Jenkins 파이프라인에 쉽게 통합되는 오픈 소스 보고 도구입니다.
- Jenkins는 Extent Reports 외에 다른 보고 도구와 통합할 수 있나요?
- 예, Jenkins는 해당 플러그인을 사용하여 JUnit, TestNG 등과 같은 다른 여러 보고 도구와의 통합을 지원합니다.
- Jenkins의 HTML 보고서에서 테스트 데이터를 어떻게 추출합니까?
- 일반적으로 Jenkins 내에서 Groovy 또는 Python 스크립팅을 사용하여 HTML 콘텐츠를 구문 분석하고 필요한 데이터를 추출합니다.
- Jenkins의 자동 이메일 알림의 이점은 무엇입니까?
- 자동화된 이메일은 빌드 및 테스트 상태에 대한 즉각적인 피드백을 제공하여 팀이 문제를 더 빠르게 해결하고 지속적인 배포 워크플로를 유지하는 데 도움이 됩니다.
자동화된 Jenkins 보고에 대한 최종 생각
Extent Reports에서 테스트 지표 추출을 자동화하고 이를 Jenkins 이메일 알림에 통합하면 CI 파이프라인 내 모니터링 기능이 크게 향상됩니다. 이 접근 방식을 통해 팀은 테스트 결과에 대한 시기적절한 업데이트를 받아 오류를 수정하고 코드를 개선하기 위한 신속한 조치를 취할 수 있습니다. 간소화된 프로세스는 시간을 절약할 뿐만 아니라 모든 이해관계자에게 야간 빌드 상태에 대한 즉각적인 정보를 제공하여 피드백과 개발의 지속적인 루프를 유지함으로써 리소스 할당을 최적화합니다.