728x90
반응형
🎯 목표
💡 나는 최고의 프로그래머당!
🖋️ 수업 내용
※ 요약 주의
📆 230728
- 🌸Spring
- 도서관리시스템
📆 230731
- 🌸Spring
- 도서관리시스템
📆 230801
- Practical 자바 유틸리티 - 9장 젠킨스를 이용한 지속적 통합 구축
- 지속적 통합(Continuos Integration): 빈번하게 반복적으로 개발 주기(코드→컴파일→패키징→테스트→검사→배포→코드→...)를 진행하는 것. 지속적 통합은 소프트웨어에 대한 통합을 반복적으로, 그리고 수시로 수행하고 테스트하는 것을 강조한다.
- 젠킨스를 설치할 때 두가지 경우 중 하나를 선택할 수 있다. 하나는 젠킨스에 내장된 서블릿 엔진을 이용해서 실행하는 것이고 다른 하나는 개별 WAS에 배포해서 실행하는 것이다. 전자도 충분히 활용가능하지만 개인적인 테스트 용도가 아닌 이상 WAS에 배포해서 사용하는 것을 권한다. (책에서는 톰캣 사용함)
- 젠킨스는 https://www.jenkins.io에서 다운받아 설치할 수 있다. 책에서는 zip파일을 사용한다.
Jenkins
Easy installation Jenkins is a self-contained Java-based program, ready to run out-of-the-box, with packages for Windows, Linux, macOS and other Unix-like operating systems.
www.jenkins.io
- 다운받아서 압축을 풀고 톰캣의 bin폴더로 가서 톰캣을 실행한다(~/startup.sh) 그후 http://localhost:8080/jenkins를 입력하면 젠킨스 비번을 입력하라는 창이 뜨는데 페이지에서 제시하는 경로로 이동하면 확인할 수 있다. 입력 후 젠킨스 초기 설정 페이지로 이동하고 첫번째 버튼을 클릭하여 플러그인을 설치한다 젠킨스 계정을 설정하면 아래와 같은 페이지를 확인할 수 있다.
- 젠킨스를 간단히 설치하고 시행시킬 수 있는 이유 중 가장 큰 요인은 바로 데이터베이스를 사용하지 않기 때문이다. 그러므로 서블릿 컨테이너에 배포하는 것만으로 설치가 끝난다. 대신 젠킨스는 파일 시스템에 각종 설정 정보를 저장하는데 이를 홈 디렉토리라고 한다. 기본적으로 젠킨스의 홈 디렉토리는 사용자의 홈 디렉토리의 .jenkins라는 디렉토리에 저장되는데 여기에는 매우 중요한 정보들이 저장되어 있기 때문에 주기적으로 백업하고 관리할 필요가 있다. 그러므로 홈 디렉토리를 별도의 위치로 변경하는 것이 훨씬 효율적이다. 방식에는 두가지가 있다.
- 환경 변수 지정: 사용자의 프로파일 속성(유닉스/리눅스)이나 환경변수(윈도우)에 JENKINS_HOME 변수를 선언하고 원하는 디렉터리를 지정한다
- 장점: 서블릿 컨테이너에 영향을 주지 않은 상태에서 값을 변경할 수 있다
- 서블릿 컨테이너의 파라미터로 홈 디렉터리를 지정: 별도의 설정 없이 자바 명령을 실행시킬 때 다음 옵션을 적용한다
-DJENKINS_HOME=<홈 디렉터리 위치>
- 장점: 서버에 하나 이상의 젠킨스가 설치되어 있을 경우 서블릿 컨테이너마다 옵션을 다르게 해서 데이터가 꼬이는 것을 막을 수 있다.
- 환경 변수 지정: 사용자의 프로파일 속성(유닉스/리눅스)이나 환경변수(윈도우)에 JENKINS_HOME 변수를 선언하고 원하는 디렉터리를 지정한다
- 젠킨스를 초기 상태로 사용하게 되면 보안상 문제가 되기 때문에 반드시 환경 설정을 해야 한다. 다양한 메뉴 중 중요한 건 Configure System(시스템 설정), Configure Global Security, Manage Plugin(플러그인 관리)이다.
- Configure System: 전체에 영향을 주기 때문에 글로벌 환경 설정 또는 글로벌 설정이라는 용어를 사용한다. 글로벌 설정은 모든 영역에 걸쳐 영향을 미치는 설정을 의미하며 지속적 통합 서버가 갖추어야 할 가장 기본이 되는 사항들을 이 화면에서 관리하게 된다.
- 보안 정보
- 형상 관리 서버 정보
- 빌드 도구 연계 정보
- 피드백 및 리포팅 정보
- Configure Global Security: 젠킨스를 설치하고 일반 혹은 프로젝트에 오픈하기 전에 제일 먼저 할 일은 보안 설정이다. 초기 상태에서는 모든 사람이 젠킨스에 접속해 원하는 작업을 할 수 있기 때문이다.
- Authentication: 사용자 설정 및 권한 설정을 위한 메뉴
- Security Realm: 젠킨스 자체에서 사용자 정보를 관리하는 방식을 선택함. (Jekins' own user database 선택)
톰캣과 같은 서블릿 컨테이너의 보안 설정을 이용하는 경우도 있지만 사용자 관리가 불편하고 설정을 변경하면 톰캣을 재시작해야 하는 불편함때문에 잘 사용하지 않는다. - Authorization: 로그인한 사용자가 젠킨스에서 어떤 일을 할 수 있는지 정의함. (Matrix-based security 선택)
- Security Realm: 젠킨스 자체에서 사용자 정보를 관리하는 방식을 선택함. (Jekins' own user database 선택)
- Authentication: 사용자 설정 및 권한 설정을 위한 메뉴
- Plugin Manager: 젠킨스에서 설치된 및 설치할 수 있는 플러그인을 확인할 수 있다. 기본적으로 설치한 20여개의 플러그인만으로도 책을 따라갈 수 있지만 필요하다면 추가로 설치할 수 있다. 설치 후에는 웬만하면 젠킨스를 재시작하는 것이 좋다.
- Configure System: 전체에 영향을 주기 때문에 글로벌 환경 설정 또는 글로벌 설정이라는 용어를 사용한다. 글로벌 설정은 모든 영역에 걸쳐 영향을 미치는 설정을 의미하며 지속적 통합 서버가 갖추어야 할 가장 기본이 되는 사항들을 이 화면에서 관리하게 된다.
- 지속적 통합 도구에서 제일 중요한 것은 어떠한 프로세스를 이용해 지속적 통합 활동을 할지 결정하고 정의한 프로세스에 따라 연관된 소프트웨어 혹은 서비스들과 연계하는 것이다. 때문에 지속적 통합에서 제일 처음 할 일은 프로세스를 설계하는 것으로 젠킨스에서는 이를 작업이라고 한다.
- 젠킨스에서 작업 정의 시 사용할 수 있는 설정 옵션들은 크게 일곱 가지가 있다.
- 작업 설명: 작업 이름과 작업에 대한 상세 설명을 입력함
- 작업 속성: 작업의 실행 여부, 동시 실행 가능 여부 등 기본 속성을 정의함
- 고급 작업 옵션: 스케줄링 시 옵션, 오류 발생 시 재시도 횟수, 다른 작업과의 연관성 등을 정의함
- 소스 코드 관리: 형상 관리 시스템과 연계하기 위한 옵션을 제공함. SVN, CVS, Git의 경우 기본 연계 기능을 제공함
- 빌드 트리거: 작업 시작 시점을 정의함. 주로 형상 관리 서버의 변경 여부, 일정 주기로 실행시키기 위한 스케줄링 기능, 다른 작업과의 연관 등을 정의함
- 빌드: 유닉스/윈도우 명령어, ANT, Maven, Gradle 등의 빌드를 위한 스크립트를 호출함
- 후속 작업: 작업이 끝난 후 추가적으로 해야 할 일을 지정함. 이메일 연계, 결과 리포팅, 다른 작업 실행 등의 설정이 가능함
- 젠킨스를 이용해 지속적 통합을 할 때 제일 먼저 생각해야 할 것은 지속적 통합 활동으로 무엇을 적용할 것인지 정의하는 일이다. 일반적인 작업 정의는 아래와 같다. 젠킨스는 아래 작업을 진행하기 위해 내부적으로 템플릿을 제공하고 있으며 템플릿에 독자들의 개발 환경 정보를 반영하게 되면 지속적 통합에 대한 작업 정의가 완료된다.
- 형상 관리로부터 소스 다운로드
- 컴파일
- 패키징
- 테스트 도구를 이용해 기능 테스트, 성능 테스트 등 수행
- 소프트웨어 배포
- 결과 리포팅
- 작업을 생성할 때 작업의 이름일 기술할 때에는 영문과 숫자, 언더바를 이용하는 것이 좋다. 윈도우의 경우 대소문자를 가리지 않기 때문에 카멜케이스는 지양한다. 책에서는 작업 이름을 WELCOME_JOB, 유형은 Freestyle project를 선택했다.
- 생성되면 작업에 대해 구체적인 내용을 정의할 수 있는데 그 중 간단한 명령을 실행시키는 기능을 추가하려한다 Build 항목의 Add build step의 옵션들은 젠킨스 작업이 실행되었을 때 어떤 필드 도구와 연계해서 작업을 실행할 것인지 결정하는 부분으로 매우 중요하고 핵심적인 정의 부분이다. 젠킨스에서는 7가지 빌드 도구와 연계 방법을 제공한다
- Execute Windows batch command: 윈도우의 명령어를 실행시킬 수 있다. 단순히 명령어를 실행시키는 것을 넘어 윈도우 운영체제에서 제공하는 배치 커맨드 스크립트를 작성해서 실행시킬 수있다.
- Execute Shell: 유닉스, 리눅스, 맥 OS에서 실행되는 셸 스크립트를 실행시킬 수 있다.(선택 후 ls -al 입력)
- Invoke Ant: ANT 스크립트를 실행시킬 수 있다.
- Invoke Gradle script: 그레이들 플러그인을 설치하면 활성화되는 옵션으로 그레이들의 빌드 스크립트를 실행할 수 있다.
- Invoke top-level Maven targets: 메이븐 최상위 골을 선택해서 실행할 수 있다.
- Run with timeout: Build Timeout 플러그인을 설치하면 활성화되는 옵션으로 타임아웃 전략을 설정할 수 있다
- Set build status to "pending" on GitHub commit: 깃허브 플러그인을 설치하면 활성화 되는 옵션
- 생성한 작업을 실행하는 방법은 자동으로 실행되도록 설정하는 방법과 수동으로 실행하는 방법이 있다. 일단 수동으로 하려면 생성한 작업을 선택한 뒤 지금 빌드 버튼을 클릭한다 클릭하면 하단에 Build History에 작업이 할당되고 실행 상태/실행 결과가 나타난다.
- 젠킨스는 데이터베이스가 없는 환경에서 동작하기 때문에 모든 결과와 이력 정보가 모두 홈 디렉토리에 파일 형태로 저장된다. 작업(.jenkins/jobs), 플러그인(.jenkins/plugins) 등을 확인할 수 있다
- 앞전에 '지금 빌드' 버튼을 클릭해 수동으로 빌드를 했으나 좀 더 좋은 지속적 통합 프로세스를 완성하기 위해 주기적으로 특정한 조건에 따라 실행되도록 하는 것이 좋다 자동화된 작업의 시작 시점을 정의하는 것을 젠킨스에서는 빌드 트리거라고 표현한다. 빌드 트리거의 옵션은 네가지가 있고 가장 많이 사용하는 옵션은 다음 두가지이다
- Build periodically: 일정한 시간 간격으로 작업을 실행시킨다. 시간 정보는 유닉스의 크론 스타일을 따른다. 일반적으로 사용한다. 이 옵션은 젠킨스 내부에 탑재된 스케줄러 엔진이 유닉스 크론 스타일의 시간 설정 방법으로 실행한다
- Poll SCM: 형상 관리 서버를 모니터링해서 변경이 있으면 작업을 실행시킨다. 형상 관리 변경에 따라 바로 검증할 수 있다는 장점이 있지만 변경이 많이 발생하는 시스템이라면 오히려 역효과가 생길 수 있다.
- 작업을 생성할 때 Build Trigger(빌드 유발)에서 Build periodically를 입력하고 나타나는 텍스트박스에 크론식을 입력하면 그 식에 맞게 작업이 실행된 것을 확인할 수 있다
- 젠킨스에서 작업을 연계하는 방식은 두가지가 있다
- Post build action(빌드 후 조치)을 이용한 후속 작업 연계: 젠킨스 작업이 끝난 이후 후속 처리를 정의하는 기능. Build other projects 선택 후 작업명(작성 후 생성해도 됨)을 작성한다
- Build trigger를 이용한 다른 작업 종료 모니터링
- 특정한 작업이 실행되는 것을 모니터링하다가 종료되면 작업을 실행시키는 방법도 제공한다. Build Triggers(빌드 유발)에서 Build after other projects are built에 종료를 모니터링할 작업명을 입력한다
📆 230802
- Practical 자바 유틸리티 - 9장 젠킨스를 이용한 지속적 통합 구축
- 서브버전 연계: 작업을 만든 후 Source Code Management(소스 코드 관리) 항목에 Subversion이 없다면 플러그인을 설치한다 설치하면 Subversion 항목이 난타난다 선택하면 아래 항목이 나타난다
- Repository URL: 서브버전에 접근하기 위한 URL.
- Credentials: 서브버전에 접속할 사용자 아이디와 비밀번호를 입력한다. Add버튼을 클릭하면 현재 작업에만 정보를 반영할지 젠킨스 전체에 영향을 주는 설정으로 반영할지 선택할 수 있다.
- Local module directory: 형상 관리 자원을 체크아웃할 로컬 디렉토리 위치를 지정한다. 절대경로는 허용되지 않는다.
- Repository depth: 서브버전은 하나의 저장소에 생성할 수 있는 디렉터리 깊이에 대한 제약이 없다. 걍 infinity로 지정함
- Ignore externals: 서브버전은 svn:externals 기능을 가지고 있는데 주로 설정 정보 등을 이용해서 자원을 체크아웃하거나 업데이트할 때 상세히 제어할 수 있다.
- 서브버전은 최초에 소스 코드를 동기화해서 다운로드할 때는 체크아웃 명령을, 그 이후부터 변경분을 동기화할 때는 업데이트 명령을 수행한다. 반면 젠킨스에서 서브버전과 연계할 때는 체크아웃을 할지 업데이트를 할지 젠킨스 내부적으로 판단하며 별도로 구분해서 설정하지 않아도 된다.
- 작업 설정을 완료하고 빌드를 하면 Console Output 메뉴를 클릭해 서브버전에 존재하는 소스코드를 다운로드한 로그를 확인할 수 있다.
- 서브버전 연계: 작업을 만든 후 Source Code Management(소스 코드 관리) 항목에 Subversion이 없다면 플러그인을 설치한다 설치하면 Subversion 항목이 난타난다 선택하면 아래 항목이 나타난다
- 🌸Spring
- 도서 관리 시스템
📆 230803
- 🌸Spring
- 도서 관리 시스템
💭 기록
-
728x90
반응형