Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- recursion example
- katalon 비교
- oracle group by
- 한국투자증권 해외주식 양도세
- js 자동완성
- CSTS 폭포수 모델
- 홈택스 해외주식 양도세
- 해외증권 양도세 한국투자증권
- 재귀 예제
- 테스트 자동화
- 최대공약수 예제
- katalon
- 주식 양도세 신고방법
- 피보나치함수 예제
- katalon 자동화
- 피보나치 예제
- Katalon Recorder 사용법
- 해외주식 양도세 신고
- 재귀함수 예제
- bfs 미로탐색 java
- javascript 자동완성
- katalon 사용법
- katalon xpath
- tomcat log
- 톰캣 실시간 로그
- git 연동
- 피보나치함수
- 국세청 해외주식 양도세 신고방식
- 한국투자증권 양도세 신고
- java.sql.SQLSyntaxErrorException
Archives
- Today
- Total
엄지월드
Katalon&Mattermost&Bitbucket&Jenkins Integration 하기 본문
- jenkins 설치(D:\apache-tomcat-8.5.45\webapps에 war 파일을 놓으면, startup.bat 파일 실행 시 자동으로 설치됨)
- Mattermost Notification Plugin 설치
- Mattermost Plugin 설치 후, (Jenkins 관리) > (시스템 설정)에서 하단에 위치한 Global Mattermost Notifier Settings를 설정해줍니다.
EndPoint : mattermost 주소
Channel : mattermost 채널
BUild Server URL : 자신의 jenkins 주소
- jenkins에서 credencial 등록(http://localhost:8080/jenkins/credentials/store/system/)
- katalon report plugin 다운로드
https://store.katalon.com/product/59/Basic-Report
- pipeline 등록 후 Build
import hudson.tasks.test.AbstractTestResultAction
import hudson.model.Actionable
def pipeName = "${JOB_NAME}"
@NonCPS
def getTestSummary = { ->
def testResultAction = currentBuild.rawBuild.getAction(AbstractTestResultAction.class)
def summary = ""
if (testResultAction != null) {
def total = testResultAction.getTotalCount()
def failed = testResultAction.getFailCount()
def skipped = testResultAction.getSkipCount()
summary = summary + (pipeName+" TOTAL: " + total)
summary = summary + ("\n\t - PASS : " + (total - failed - skipped))
summary = summary + ("\n\t - FAIL : " + failed)
summary = summary + ("\n\t - SKIP : " + skipped)
} else {
summary = "No tests found"
}
return summary
}
node {
def Test_Env = ""
def mattermost_channel = "#INSIGHT_AUTOMATION"
def jobname = "${env.JOB_NAME}"
def katalon_HOME = "D:\\Katalon_Studio_Engine_Windows_64-7.5.1"
def katalon_PJT = "$WORKSPACE" + "\\insight_automation_test.prj"
def katalon_Testsuite = "Test Suites/Screening/AD_610_001_Result_PT_TopMenu1"
def katalon_Key = "KATALON_API_KEY"
// def katalon_cmd = "$katalon_HOME" + "\\katalonc -noSplash -runMode=console -projectPath=\"" + "$katalon_PJT" + "\" -retry=0 -testSuiteCollectionPath=\"" + "$katalon_Testsuite" + "\" -apiKey=" + "$katalon_Key"
def katalon_cmd = "$katalon_HOME" + "\\katalonc -noSplash -runMode=console -projectPath=\"" + "$katalon_PJT" + "\" -retry=0 -testSuitePath=\""+"$katalon_Testsuite" + "\" -executionProfile=\"Production_ejy\" -browserType=\"Chrome\" -apiKey=" + "$katalon_Key"
def junit_report_path = "Reports/**/JUnit_Report.xml"
def report_url_format = "http://localhost:8080/jenkins/job/job_name/test_results_analyzer/"
def report_url = report_url_format.replaceAll(/job_name/, "${jobname}")
if (jobname ==~ /.*QA.*/) {
Test_Env = "QA"
}
else if (jobname ==~ /.*ST.*/) {
Test_Env = "Staging"
}
else if (jobname ==~ /.*Prod.*/) {
Test_Env = "Production"
}
else {
Test_Env = "test"
}
def subject = "Test Environment : ${Test_Env}"
try {
stage('Prepare Tests'){
// 빌드 중 중단될 경우 프로세스가 남아있어 workspace 삭제가 안됨. 남아있는 프로세스를 강제로 종료하도록 함.
// java 프로세스 확인 > 있으면 kill
ProcessINFO = bat(label: 'get pid', returnStdout: true, script:"@tasklist /FI \"ImageName eq java.exe\" /FI \"WindowTitle ne Tomcat\" /FO LIST")
if (ProcessINFO =~ "정보: 실행 중인 작업 중 지정된 조건에 일치하는 작업이 없습니다.")
{
println "Java process does not exist"
}
else
{
Plist = ProcessINFO.readLines()
PID = Plist[2].replace("PID:", "")
PID = PID.replaceAll("\\s", "")
println "PID: " + "${PID}" +"\n"
bat "taskkill /F /pid ${PID}"
}
// katalon 프로세스 확인 > 있으면 kill
//bat "taskkill /F /FI \"imagename eq katalon.exe\""
// chrome 프로세스 확인 > 있으면 kill
//bat "taskkill /F /FI \"imagename eq chrome.exe\""
// chromedriver 프로세스 확인 > 있으면 kill
//bat "taskkill /F /FI \"imagename eq chromedriver.exe\""
sleep(time:10,unit:"SECONDS")
// workspace clean
cleanWs()
}
}
catch (e) {
error "Prepare Fail"
}
//color code : RED 00FF00 GREEN #FF0000
mattermostSend(channel : "${mattermost_channel}", color : '#FF0000', message : '====== '+pipeName+' UI 테스트 시작 ======')
//mattermostSend(channel : "${mattermost_channel}", message : "${subject}")
try {
stage('Source Checkout'){
// mattermostSend(channel : "${mattermost_channel}", message: "1. "+pipeName+" Source Checkout")
// credentialsId는 Jenkins에서 발급
git branch: 'master', credentialsId: 'ejy1024', url: 'https://test@bitbucket.org/test/insight_automation.git'
// mattermostSend(channel : "${mattermost_channel}", message: "\t ▷▷▷ Completed")
}
}
catch (e) {
mattermostSend(channel : "${mattermost_channel}", message: "\t ▷▷▷ Uncompleted")
mattermostSend(channel : "${mattermost_channel}", color : '00FF00', message: " !!! "+pipeName+" 소스 체크아웃 실패 !!!")
error "Checkout Fail"
}
try {
stage('Run Tests'){
// mattermostSend(channel : "${mattermost_channel}", message: "2. "+pipeName+" Run Tests")
bat "${katalon_cmd}"
// mattermostSend(channel : "${mattermost_channel}", message: "\t ▷▷▷ Completed")
}
}
catch (e) {
if (currentBuild.result == 'FAILURE') {
mattermostSend(channel : "${mattermost_channel}", message: "\t ▷▷▷ Uncompleted")
mattermostSend(channel : "${mattermost_channel}", color : '00FF00', message: " !!! "+pipeName+" UI 테스트 중단 !!!")
error "Abort Test"
}
else {
// mattermostSend(channel : "${mattermost_channel}", message: "\t ▷▷▷ Completed")
}
}
try {
stage('Generate Report'){
//mattermostSend(channel : "${mattermost_channel}", message: "3. "+pipeName+" Generate Report")
junit "${junit_report_path}"
//mattermostSend(channel : "${mattermost_channel}", message: "\t ▷▷▷ Completed")
}
}
catch (e) {
mattermostSend(channel : "${mattermost_channel}", message: "\t ▷▷▷ Uncompleted")
mattermostSend(channel : "${mattermost_channel}", color : '00FF00', message: " !!! "+pipeName+" 리포트 생성 실패 !!!")
error "Generate report Fail"
}
def testSummary = getTestSummary()
// mattermostSend(channel : "${mattermost_channel}", message : '-----------------------------')
mattermostSend(channel : "${mattermost_channel}", message : "[ Test Result ] \n\t ${testSummary}" )
//mattermostSend(channel : "${mattermost_channel}", message : "[ Test Report ] \n\t ${report_url}")
// mattermostSend(channel : "${mattermost_channel}", color : '#FF0000', message : '====== '+pipeName+' UI 테스트 종료 ======')
}
- 계속 Build 하면서 ScriptApproval을 계속 진행합니다. (http://localhost:8080/jenkins/scriptApproval/)
(다 하니 5개까지 담기네요..)
- 계속 돌리니 성공!
<광고 한번씩 클릭해주시면 저에게 큰 힘이 됩니다 😃>
'QA > TestOps' 카테고리의 다른 글
jenkins 원격 빌드 (0) | 2021.03.25 |
---|---|
Jenkins 업데이트 방법 (0) | 2020.07.10 |
[katalon] Jenkins Integration하기 (0) | 2020.06.01 |
jenkins를 통해 Katalon Runtime Engine실행 방법 (0) | 2020.05.27 |
Comments