참고
젠킨스 job(Freestyle project)
NOTE
젠킨스에서 Job은 특정 자동화 작업을 실행하는데 사용되는 객체 유형을 의미하며, Item은 Job을 포함하여 Jenkins에서 관리할 수 있는 모든 유형의 객체를 말한다!
Job 유형
•
FeeStyle Project: UI를 통해 자유롭게 빌드 설정
•
Pipeline: 스크립트(Jenkinsfile)을 사용하여 빌드 실행
•
Multi Configuration project: 다양한 조건을 조합하여 반복 빌드 실행
•
Folder: Job을 관리하는 폴더
•
Multi Branch Pipeline: scm의 여러 브랜치들을 동시에 pipeline 빌드
•
Organization Folder: 깃허브 조직 하위의 repo들을 동시에 빌드
FeeStyleJOB
•
소스코드 관리
◦
특정 깃허브 레포를 폴더에 체크아웃한다.
•
빌드 유발
◦
빌드를 시작하는 방법을 지정한다.
◦
ex) 특정 시간 혹은 주기마다 빌드한다.
◦
ex) 다른 JOB이 완료되거나, 원격에서 API를 호출하면 빌드한다.
•
빌드 스텝
◦
빌드 명령 스크립트를 실행한다.
◦
ex) 소스코드 빌드, docker 이미지 생성, 소나 스캐너 or ArgoCD 실행
•
빌드 후 조치
◦
빌드 이후에 결과물을 처리한다.
◦
ex) 아티팩트 저장, 테스트 가시화, 빌드 결과 전송
젠킨스 Job 작성 - 소스코드 관리
NOTE
젠킨스에서는 코드 저장소로부터 소스 코드를 체크아웃하거나, 특정 버전의 코드를 가져와 빌드 및 테스트와 같은 작업을 수행하기 위해 설정을 정의한다!
•
Git: Git RepoURL, Credentials, Branches to Build를 입력한다.
•
SubVersion(플러그인): Git과 유사한 플러그인
•
Multiple SCMs(플러그인): 다수의 Repo를 동시에 체크아웃 가능하다.
repo 2개가 분리되서 저장된다.
필요한 경로만 체크아웃 받음
•
Behavior > Sparse Checkout paths에서 경로를 설정하면 특정 폴더만 체크아웃이 가능하다.
젠킨스 Job 작성 - 빌드유발 설정
NOTE
젠킨스에서 빌드 유발은 자동화된 프로세스를 시작하기 위한 조건이나 이벤트를 정의한다!
빌드 유발 종류
Poll SCM(소스 코드 관리 변경시)
cron expressions을 통해 주기적으로 저장소를 확인하여, 변경사항 확인
•
cron expressions을 통해 주기적으로 저장소를 확인하여, 변경사항 확인
Github hook trigger for GITScm polling(웹훅)
setting에서 Github token등록
소스코드에 변경이 발생하면, 저장소에서 Jenkins에 HTTP요청을 보낸다.
빌드 원격 실행
curl --user admin:[tokenrkqt] \
"http://localhost:8081/job/practice1/build?token=build"
Groovy
복사
토큰값 지정
젠킨스 Job 작성 - 빌드 스텝
NOTE
젠킨스에서 빌드 스텝은 Job 실행 시 수행되어야 할 일련의 작업 또는 명령어를 정의하는 부분이다!
빌드스텝 종류
Freestyle Job에서의 빌드 스텝
•
스크립트 실행
•
빌드 도구 사용(Maven, Gradle, Ant)
•
소스코드 관리(Git, SVN)
•
아티팩트 복사
환경변수
$JENKINS_HOME # jenkins의 홈 디렉토리
$WORKSPACE # jenkins의 작업 디렉토리
$BUILD_NUMBER # 빌드번호
$BUILD_ID # 빌드 고유 식별자
$JOB_NAME # job이름
$GIT_COMMIT # 현재 체크아웃한 git commait hash
$GIT_BRANCH # 현재 브랜치명
Shell
복사
실습
# 환경변수 출력
echo $WORKSPACE
echo $BUILD_NUMBER
echo $JOB_URL
# gradle build
cd projects/spring-app
./gradlew build
# ssh 복사
chmod 400 /key/private.key
scp -i /key/private.key -P 2222 \
${WORKSPACE}/projects/spring-app/build/libs/demo-0.0.1-SNAPSHOT.jar \
user@server_1:/config/
Shell
복사
젠킨스 Job 작성 - 빌드후 조치 실습
NOTE
젠킨스에서 빌드 후 조치는 빌드 프로세스가 성공적으로 완료된 후 실행되는 일련의 작업이다.
빌드후 조치 종류
•
아티팩트 아카이빙
•
빌드결과 알림
•
다른 프로젝트 빌드
•
Junit 테스트 결과 게시
•
정적 코드 분석 결과 게시
아카이브 실습
publish over ssh 사용해서 아카이빙 파일전송
SCM Forensics 플러그인사용
SCM Forensics 플러그인 Git Repo를 분석해, 파일 개수및 라인수, 변경정보 출력)
젠킨스 Job 작성 - 테스트 결과 가시화 실습
NOTE
* 테스트 리포트 가시화 추가
- workspace 내의 test 결과 출력되는 위치 확인
- 빌드후 조치 > Publish Junit test result report 추가
* Test report XMLs 에 **/test/TEST-*.xml 추가
- 빌드후 테스트 결과 확인
* 테스트 커버리지 가시화 추가
- Jacoco 플러그인 추가
- github 에 가서 projects/spring-app/build.gradle 파일을 수정하여
// jacoco 라는 부분을 uncomment
- 빌드후 조치 > Record JaCoCo coverage report 추가
- Path to source directories 의 **/src/main/java 를 **/src/main/kotlin 로 변경
- 빌드후 커버리지 출력 결과 확인
* 정적분석 가시화 추가
- Warnings Next Generation 플러그인 추가 (Warnings로 바뀜)
- github 에 가서 projects/spring-app/build.gradle 파일을 수정하여
// import org.jlleitschuh.gradle.ktlint.reporter.ReporterType 와
// configure<org.jlleitschuh.gradle.ktlint.KtlintExtension> 이후를 uncomment
- 빌드후 조치 > Record compiler warnings and static analysis results 추가
- Tool : ktlint
- Report File Pattern : **/reports/ktlint/**/*.xml
- 고급 > Enable recording for failed build 추가
- 빌드후 정적분석 결과 확인
Shell
복사