내용 목차
본 장에서는 Jenkins 웹 브라우저의 접속 방법, Jenkins 프로젝트 생성 및 Jenkins 기능에 대해 설명한다.
Jenkins에서는 Git과 연동해서 ProObject의 개발 및 운영을 위하여 형상관리, Source Generation, Build, Deploy 등의 다양한 기능들을 제공한다. Git 연동에 대한 자세한 내용은 “제6장 GIT 연동”을 참고한다.
다음은 Jenkins 기능에 대한 설명이다.
기능 | 설명 |
---|---|
형상관리 |
|
Source Generation |
|
Build |
|
Deploy |
|
다음은 Jenkins에 시작하는 과정에 대한 설명이다.
웹 브라우저에서 아래와 같이 주소를 입력한다.
http://{서버IP 주소:포트}/{Jenkins Name}/login
주소를 입력한 후 서버에 정상적으로 Jenkins가 설치된 경우 로그인 페이지가 나타난다. 사용자 ID와 패스워드를 패스워드를 입력한 후 [로그인] 버튼을 클릭한다. 잘못된 ID나 패스워드를 입력하는 경우 경고 문구가 나타난다.
로그인에 성공하면 대시 보드으로 이동한다. 대시보드에서는 생성한 프로젝트의 목록과 빌드 성공 여부를 확인할 수 있다.
[새로운 Itme] 메뉴를 클릭하면 신규 프로젝트를 생성할 수 있다. 자세한 내용은 “7.4. 프로젝트 색성”을 참고한다.
프로젝트를 생성한 후 대시보드([그림 7.3])에서 해당 프로젝트를 클릭하면 Jenkins 프로젝트 메인 화면으로 이동한다. 각 화면의 구성 요소에 대한 자세한 내용은 “7.3. 화면 구성”를 참고한다.
메인 화면의 오른쪽 상단에 [로그아웃] 버튼을 클릭하면 로그아웃되며 로그인 초기 화면([그림 7.1])으로 이동한다.
프로젝트 생성 후 대시보드([그림 7.2])에서 해당 프로젝트를 클릭하면 Jenkins 프로젝트 메인 화면으로 이동한다.
다음은 Jenkins 프로젝트 메인 화면 메뉴에 대한 설명이다.
메뉴 | 설명 |
---|---|
[Build with Parameters] | 구성 페이지에 설정한 플로우에 따라 Build job을 수행한다. |
[구성] | Jenkins 프로젝트별로 빌드할 때 수행할 job을 설정하거나 구성한다. 프로젝트 구성에 대한 자세한 내용은 “7.5. 프로젝트 구성”의 설명을 참고한다. |
[Build History] | Build Job별로 빌드할 때마다 "#+Build Number"를 부여한다. Build Number 앞의 아이콘으로 빌드의 수행 결과를 확인할 수 있다.
자세한 내용은 “7.7. 프로젝트 로그 조회”를 참고한다. |
새로운 프로젝트를 생성해야 Jenkins에서 제공하는 기능을 사용할 수 있다. 대시보드( [그림 7.2])에서 [새로운 Itme] 메뉴를 클릭한다. Jenkins의 프로젝트 이름은 입력한 후 'Freestyle project'를 선택하고 [OK] 버튼을 클릭한다.
본 절에서는 System 프로젝트와 DevOps 프로젝트의 구성에 대해서 설명한다.
System 프로젝트는 ProStudo IDE에서 설정한 GIt으로 메타를 Push할 경우 Post-Checkout hook을 실행 ProMinor의 정적 분석과 Test 서버의 관리 테이블에 메타 정보를 설정한다.
Post-Checkout은 다음의 경로에 위치한다.
${WORKSPACE}/${project name}/.git/hooks/post-checkout
Jenkins 프로젝트 메인 화면([그림 7.3])에서 Jenkins 프로젝트의 [구성] 메뉴를 선택한 후 각 탭 화면의 항목을 설정한다.
소스 코드의 기본적인 정보를 설정한 후 [저장] 버튼을 클릭한다
소스 코드를 관리하는 저장소에 관련한 정보를 설정한 후 [저장] 버튼을 클릭한다
항목 | 설명 |
---|---|
None/Git | 소스 코드를 관리할 대상을 선택한다. ('Git'을 선택) |
Repository URL | 'Git'을 선택한 경우 Git Repository Url을 설정한다. |
Credentials | [Add] 버튼을 클릭해서 사용자 Credential을 추가한다. |
Branch Specifier | 연결 및 build할 branch를 설정한다. |
Repository browser | '(자동)'을 선택한다. |
빌드를 하는 다양한 방식을 설정한다. 예제에서는 'Poll SCM' 항목을 선택한 후 [저장] 버튼을 클릭한다
항목 | 설명 |
---|---|
빌드를 원격으로 유발 | 외부에서 URL을 통해 빌드를 진행할 수 있도록 한다. |
Build after other project are built | 다른 프로젝트를 빌드한 후 이어서 현재 프로젝트를 빌드한다. |
Build periodically | 빌드를 배치 프로세스처럼 설정해 놓은 시간에 자동으로 빌드를 진행하도록 한다. |
Poll SCM | 형상관리 서버에를 주기적으로 감시하여 변경된 사항이 존재할 때 빌드를 수행한다. (옵션항목) 'Poll SCM'을 선택하면 Git에 push 후 빌드를 trigger하여 자동으로 Build job을 수행할 수 있다. 선택하지 않을 경우 Jenkins 프로젝트 메인 화면([그림 7.3])의 [Build with Parameters] 메뉴로 Build job을 수행한다. |
Jenkins 프로젝트 메인 화면([그림 7.3])에서 Jenkins 프로젝트의 [구성] 메뉴를 선택한 후 각 탭 화면의 항목을 설정한다.
[소스 코드 관리] 탭(“7.5.1. System 프로젝트”의 설명을 참고한다.)
소스 코드의 기본 적인 정보를 설정한다. '이 빌드는 매개변수가 있습니다' 체크박스를 선택한 후 Boolean Parameter에 항목을 추가한다. 'Name'에 항목을 'IsFullBuild'로 설정하고 'Default Value' 항목을 선택힌다.
다음은 빌드를 진행하는 과정에 대한 설명이다.
[Add build Step] 버튼을 클릭해서 'Execute shell'을 추가하고 'Command' 항목에 '${WORKSPACE}/env_insert.sh'와 '${WORKSPACE}/buildRscInfo.sh'를 각각 설정한다.
다음은 추가한 Execute shell의 설명이다.
파일 | 설명 |
---|---|
env_insert.sh | Jenkins 빌드를 위한 여러 환경 변수들에 관한 설정을 위한 shell script이다. |
buildRscInfo.sh | Jenkins 빌드를 위한 데이터를 DB에 저장하기 위한 shell script이다. |
[Add build Step] 버튼을 클릭해서 Invoke Gradle script를 추가한 후 Full Build와 Partial Build 설정을 한다.
Full Build 설정
'Invoke Gradle' 항목을 선택하고 'Gradle Version'을 'Gradle'로 선택한다.
빌드 옵션에 따라 'Tasks' 항목에 다음을 설정한다(설정 값을 확인하려면 'Tasks' 항목 끝 화살표를 클릭한다).
cleanDir, appDtoBuild, appSrcCopy, appSrcBuild, dtoBuild, srcCopy, srcBuild, appDtoJar, appSrcJar, dtoJar, srcJar, sgConfigCopy, cleanBuildNumDir
'Tasks' 아래 [고급] 버튼을 클릭해서 화면을 확장한 후 'Build File' 항목을 'fullBuild.gradle'로 설정한다.
Partial Build 설정
'Invoke Gradle' 항목을 선택하고 'Gradle Version'을 선택한다.
빌드 옵션에 따라 'Tasks' 항목에 다음을 설정한다(설정 값을 확인하려면 'Tasks' 항목 끝 화살표를 클릭한다).
makeEmptyDir, appDtoCopy, appDtoBuild, appDtoClassCopy, appSrcCopy, appSrcBuild, appSrcClassCopy, dtoCopy, dtoBuild, dtoClassCopy, srcCopy, srcBuild, srcClassCopy, appDtoJar, appSrcJar, dtoJar, srcJar, sgConfigCopy, cleanDir
'Tasks' 아래 [고급] 버튼을 클릭해서 화면을 확장한 후 'Build File' 항목을 'Build.gradle'로 설정한다.
'Execute shell'을 추가하고 Command에 ${WORKSPACE}/deploy.sh를 설정한 후 [저장] 버튼을 클릭한다.
다음은 추가한 Execute shell의 설명이다.
파일 | 설명 |
---|---|
deploy.sh | 빌드된 리소스를 Deploy Call하기 위한 shell script이다. |
설정한 Jenkins 프로젝트에서 Build Job Process는 Jenkins 프로젝트 메인 화면의 [Build with Parameters] 메뉴에서 'IsFullBuild' 선택 여부에 따라 'Partial Build'와 'Full Build'로 나뉜다.
다음은 Full Build와 Partial Build에 따른 설정 값에 대한 설명이다.
Full Build
구분 | 설명 |
---|---|
소스젠 | 기존 리소스 + push 리소스 |
Compile | 전체 범위 |
jar packaging | 전체 범위 |
Partial Build
구분 | 설명 |
---|---|
소스젠 | 기존 리소스 + push 리소스 |
Compile | push 리소스 |
jar packaging | push 리소스 |
다음은 Jenkins 프로젝트의 Full Build 옵션으로 Job을 빌드하는 과정에 대한 설명이다.
Source Generation
Add, Modified Commit된 ProObject의 메타 유형별(dto, dof, bo, so, jo) 소스를 Generation한다.
Source Generation된 java file 관리
Build
모든 리소스 Full Build 및 Jar 파일을 패키징한다.
빌드 결과 바이너리를 빌드 버전별 및 Trunk에 관리
다음은 빌드 결과 바이너리를 관리하는 위치에 대한 설명이다.
종류 | 관리 위치 |
---|---|
java file |
|
pojo java file |
|
meta file |
|
class file |
|
jar file |
|
다음은 Build Job Process의 결과 로그에 대한 설명이다.
Jenkins 프로젝트 메인 화면([그림 7.3])의 [Build History] 메뉴에서 Build Job별로 수행된 Build Number의 [Console Output] 메뉴에서 Build Job Process의 결과 log를 확인할 수 있다.
Jenkins 프로젝트를 디플로이하는 과정에 대해서 설명한다.
디플로이 설정
Jenkins 프로젝트에서 배포할 수 있는 서버의 타입은 'Runtime Server'과 'Test Server'이다. 이 둘의 설정은 ${WORKSPACE}/gradle.properties의 *'isDeployRequest' 옵션으로 설정할 수 있다.
isDeployRequest = true : [Runtime Server] isDeployRequest = false : [Test Server]
Runtime Server는 사이트의 프로그램이 수행됨으로써 고객들에게 서비스를 제공하는 운영 환경이다. Runtime Server에 디플로이를 위해서는 Jenkins 프로젝트에서 Build Process 후에 Shell Script를 수행해 배포 서비스를 호출하게 된다. Test Server는 개발자가 Test 할 수 있는 개발용 서버환경이다.
애플리케이션 및 서비스 그룹 디플로이
Jenkins 프로젝트에서 빌드하는 경우 [IsFullBuild] 메뉴를 선택한 후 빌드한다. Build Job Process 이후 IsFullBuild가 선택됨을 확인하여 개발 서버의 서비스 그룹 배포 서비스 호출 및 수행한다.
클래스 디플로이
Jenkins 프로젝트에서 빌드를 하는 경우 [IsFullBuild] 메뉴 선택하지 않고 빌드한다. Build Job Process 이후 IsFullBuild가 해제됨을 확인하여 개발 서버의 클래스 배포 서비스 호출 및 수행한다.
로그 조회
Jenkins 프로젝트 메인 화면([그림 7.3])의 [Build History] 메뉴에서 Build Job별로 수행된 Build Number의 Console Output 메뉴에서 Build Job Process 이후의 디플로이 결과 로그를 확인할 수 있다.