Search
Duplicate
📒

[Jenkins] 02-1. 젠킨스의 기본요소(Job - Freestyle Project)

상태
완료
수업
Jenkins
주제
기본개념
4 more properties
참고

젠킨스 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
복사