Jenkins
수정·
[Webhook] Github Webhook을 통한 빌드/배포 자동화[3]
E2E Test 시행을 위한 준비
이전 포스트에 이어 E2E 테스트를 진행하기 위한 과정을 준비해보자.
- Manage Jenkins -> Plugins -> Jenkins NodeJS Plugin 설치
- Manage Jenkins -> Tools -> NodeJS 추가 newman, newman-reporter-html]


Newman은 Postman으로 만든 E2E Test Collection을 CLI 환경에서 실행시켜주는 툴이며, newman-reporter-html 은 테스트 결과를 html 로 변경하기 위해 필요한 툴이다.
Postman 테스트 작성

Postman의 테스트 콜렉션을 Export 해준다. 이것을 자신의 프로젝트 디렉토리 내부 어딘가에 저장해두고, Github에 Push를 해둔다.
새로운 Pipeline 생성
E2E 테스트를 수행할 새로운 파이프라인을 생성하자. 이 파이프라인 역시 Genereic Webhook Trigger 를 이용할 것이기 때문에 Post content parameters 를 지정해준다 .
name : ref
expression : $.ref
name : commit_sha
expression : $.after
여기서 ref는 refs/heads/branch_name 의 형식으로 들어오게 되고, .after 에는 현재 커밋 값이 들어온다. 그리고 아래 Optional Filter에 다음을 추가해준다.
value : ^(refs/heads/main)
expression : $ref
위 과정을 통해서 이 파이프라인은 Github Repository에 Push 이벤트가 발생했을 경우 main branch를 대상으로만 동작하게 설정되었다.
Github Webhook 생성
이전 포스트에서 가정한 시나리오에서는 마스터 브랜치를 기준으로 push event가 발생할 경우 E2E 테스트를 수행하는 것으로 가정하였다. 이를 위해 새로운 Webhook을 생성해야한다. Webhook은 Just push event 를 선택하여 push event에만 발송되도록 설정하자.
Pipeline Script 작성
pipeline {
agent any
tools {nodejs 'nodejs-20.5.1'} // nodejs-20.5.1 부분은 Manage Jenkins -> Tools 자신에서 지정한 이름이다. 이게 다르면 에러가 발생
stages {
stage('Checkout') {
steps {
git branch: "${ref.replaceAll('refs/heads/','')}", url: 'https://github.com/dhkim92-dev/multibranch-test.git'
}
}
stage('Web Application Test Run') {
steps {
sh '''nohup ./gradlew bootTestRun &'''
}
}
stage('E2E Test Run') {
environment {
HTTP_PROXY='127.0.0.1:8080' // 로컬 호스트에서 테스트 시 위 부분을 작성해줘야 동작한다.
}
steps {
sh '''newman run --insecure --env-var HTTP_PROXY src/test/kotlin/kr/dohoonkim/demo/jenkins/demo/e2e/Jenkins.postman_collection.json \
-reporters cli,junit --reporter-junit-export "newman/homepage-backend-report_${commit_sha}.xml"'''
junit "**/newman/homepage-backend-report_${commit_sha}.xml"
}
}
}
post {
...
}
}
결과

