- 젠킨스는 소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 툴이다.
- CI(Continuous Integration) 툴
- 빌드는 서버에 올릴 수 있는 상태로 만드는 것을 빌드라고 한다.
- 빌드를 자동화 해주는 툴
- 서버에 올려서 사용자가 사용 할 수 있게 하는 것은 배포(Deploy)라고 한다.
- git에서 pull을 해서 build한 후 배포까지 하는 것이 하나의 Jenkins Project가 하는 일
- 버전관리시스템과 연동하여 자동화테스트를 수행 ⇒ 젠킨스를 사용하는 가장 큰 이유 중 하나
- 젠킨스 설치 및 구동
- 자바로 개발되었으며 서블릿 컨테이너 위에서 구동된다. 따라서, WAS인 Tomcat, Jetty등 서블릿 컨테이너를 설치하고 이 위에서 젠킨스 war파일로 구동.
- 각 OS별로 별도의 설치파일을 제공하고 있으나, OS에 제한적이지 않고 WAS에 배포함으로써 구동할 수 있도록 .war파일을 다운받았다.
- JDK 설치
- WAS 설치
- Jenkins 설치
- https://jenkins.io/ 접속 후 LTS 버전 탭 이동
- Download Jenkins X.XX.XX for Generic Java Package(.war) 파일 설치
- Jenkins 구동
- Tomcat의 설치 위치로 이동한다.
- webapps 폴더 아래 설치한 jenkins.war파일을 배포하고 Tomcat을 구동한다.
- Tomcat의 구동은 파일 탐색기 진입 후 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools 이동 "서비스" 앱 실행 또는 시작메뉴 → Windows 관리도구 → 서비스 앱을 실행 한 후 Apache Tomcat 8.5 TomcatX 서비스를 시작 시킨다.
- 웹브라우저의 주소창에 localhost:8080/jenkins 또는 127.0.0.1/jenkins 또는 자신의ip:8080/jenkins를 입력하고 접속하여 젠킨스가 정상적으로 구동 되는지 확인한다.
- 접속 후 Secret Key를 입력하는 화면이 나오면, key의 경로에서 Secret Key 값을 복사하여 입력한다.
- 키를 입력하고, lock이 풀리면 install suggested plugins를 클릭하여 기본 플러그인을 설치한다.
- 다음 순서로 관리자 계정을 만들면 젠킨스 메인 페이지 접속에 성공 할 수 있다.
- 젠킨스 빌드 환경 구축
- Windows 10 / JDK 1.8 / Tomcat 8.5.20 / Git 2.14.1 / Jenkins 2.60.3 / Gradle 4.1 / github
- 젠킨스 플러그인 설치
- 메인 페이지 왼쪽 사이드 메뉴의 Jenkins 관리 탭으로 이동한다.실습에서 필요한 플러그인은 Git / Github / Gradle Plugin이고, 각 플러그 인을 검색하여 설치를 진행한다.
- 메인 페이지 왼쪽 사이드 메뉴의 Jenkins 관리 탭으로 이동한다.
- Jenkins 관리 메뉴의 플러그인 관리 탭으로 이동
- 설치 가능 탭으로 이동하여 설치하고자 하는 플러그인을 체크 한 후 설치한다.
- Git 설치
- https://git-scm.com/ 링크로 이동한다.
- 메인화면 오르쪽에 Downloads for Windows를 통해 설치한다.
- 설치 위치를 지정하고 default 설정으로 설치한다.
- 설치 위치로 이동하여 git bash를 실행하고 git --version 명령을 통해 설치 된 git의 버전을 확인한다.
- Build Tool 설치
- https://gradle.org/releases/ 링크로 이동한다
- Gradle latest version을 다운 받는다.
- 설치를 원하는 위치에서 압축을 해제한다.
- 윈도우 환경 변수를 설정한다
- 제어판 → 시스템 → 고급 시스템 설정 → 고급 탭의 "환경 변수 (N)"로 진입
- 시스템 변수 → 새로 만들기 → 변수 이름 : GRADLE_HOME → 변수 값 : GRADLE root 위치
- "시스템 변수(S)"에서 Path를 클릭하고 "새로 만들기(N)" 버튼 클릭 후 "%GRADLE_HOME%\bin" 경로 추가
- Git bash 쉘을 열고 gradle -v 명령을 통해 설치 된 버전을 확인한다.
- 젠킨스 Tool Configuration 설정
- 젠킨스와 연동할 Tool의 Configuration을 설정한다. Tool들이 로컬 환경에 설치 되어 있다면 install automatically 메뉴에 체크 해제하고 로컬에 설치된 Path를 등록한다.
- Jenkins 관리 탭의 Global Tool Configuration 메뉴를 선택한다.
- JDK install automatically에 체크 해제 하고, JAVA_HOME의 Path를 입력한다. 제대로 입력하지 않으면 잘못된 Path라는 경고가 발생한다.
- Git install automatically에 체크 해제 하고, Git의 Path를 입력한다. 여기서는 git.exe까지 입력해야 한다.
- Gradle install automatically에 체크 해제 하고, GRADLE_HOME의 Path를 입력한다.
- Tool의 Path 설정이 끝났다면 설정을 저장한다.
- 젠킨스와 Github 연동하기
- 젠킨스와 Github을 연동하고, 추후에 Github Webhook을 이용한 자동 빌드환경 구축을 위해서 Github web에서 Personal access token을 발급 받고, 웹 브라우저 상에서 빌드를 진행하고 결과를 확인 할 수 있다.
- Github 계정의 Jenkins Access Token 발급 받기
- Github 로그인 후 사용자 settings 탭 진입
- 왼쪽의 메뉴 중 Developer settings의 Personal access tokens 진입
- Pensonal access token의 generate new token 클릭
- Token description에 토큰 이름, Select scopes에서 repo와 admin:repo_hook 체크 후 생성
- 생성된 access token을 복사한다. Jenkins 시스템 설정에서 쓰인다.
- 젠킨스 관리 시스템 설정
- 젠킨스 관리 → 시스템 설정 진입
- 젠킨스 location ip가 localhost 또는 127.0.0.1로 설정 되어 있다면 외부 접근(Github)을 위해 자신의 ip로 변경한다. https://자신의 ip:8080/jenkins
- Github 설정 탭에서 Manage hooks 체크 후, Credentials Add → Jenkins 진입
- Kind : Secret text, Secret : Github에서 복사한 Personal access token, ID : Github 아이디 입력 후 Add로 Credentials 추가
- Test Connection을 통해서 Credentials가 잘 추가 됐는지 확인한다.
- 설정 완료
- 젠킨스 프로젝트 만들기
- 새 아이템 만들기 → Freestyle project 선택 후 프로젝트 생성
- 젠킨스 프로젝트 구성
- 새 프로젝트를 생성한 후 시스템 구성 탭으로 진입한다.
- Github project 설정
- Github repository에서 https 주소 복사 후 Jenkins 설정 탭의 Github project 탭에 url을 추가한다.
- 소스 코드 관리 설정
- 소스 코드 관리 메뉴에서 Git체크 후, Github저장소 url 입력
- Kind를 Username with password로 설정한 후 Username, Password, ID 입력(젠킨스)
- 빌드 도구 설정
- 빌드 툴로 Gradle을 선택했기 때문에, Build 탭에서 Invoke Gradle script를 통해 Gradle Build에 대한 설정을 한다. Gradle version 설정 후, Tasks는 clean, build로 설정해준다.
- 빌드 실행 및 결과 조회
- 새롭게 생성한 프로젝트 관리 창으로 접근한 뒤, Github 저장소에 push된 코드를 바탕으로 빌드를 진행한다. 웹 어플리케이션을 통해서 빌드를 실행하고 히스토리와 변경사항을 확인할 수 있고, 빌드 과정이 콘솔로 출력되는 결과를 실시간으로 볼 수 있다.
- 빌드실행(Build Now)
- 해당 프로젝트 관리 페이지에 접근하여 왼쪽 메뉴의 Build Now를 통해 실시간으로 빌드를 수행할 수 있다.
- 프로젝트 작업 공간 조회
- 메뉴의 작업 공간 탭에 접근하면 아래와 같이 연동설정한 Github 저장소에 저장된 프로젝트 소스 코드 구조를 확인 할 수 있다.
- 빌드 히스토리 조회
- 수행 한 빌드 내역을 조회 할 수 있다.
- 변경사항 확인
- 메뉴의 변경사항 탭에서 Github 저장소에 변경된 commit 내역을 확인 할 수 있다.
- 빌드 과정 콘솔 출력 결과 확인
- 다음과 같이 빌드 히스토리에서 특정 빌드 내역을 조회하고, Console Output 탭에 접근하면 실시간으로 이루어지는 빌드 내용을 웹 페이지상에서 확인할 수 있다.
- Github Webhook을 이용한 자동 빌드 환경 구축
- 먼저 젠킨스 프로젝트와 Github저장소가 연동되어 있어야 됩니다.
- Github 저장소와 젠킨스 프로젝트를 연동을 통해 빌드 환경을 구성 한 후, Github Webhook을 이용하여 Github 저장소에 push된 것이 있다면, 그 때 젠킨스가 polling하여 빌드를 실행하는 자동 빌드 환경을 구축한다.
- Github프로젝트 Jenkins 서비스 추가
- ithub프로젝트의 Settings로 진입하여 왼쪽 메뉴의 Integrations & services 탭으로 진입하고, Add service 버튼을 클릭하여 jenkins 키워드로 검색한다. Jenkins(Github plugin)를 선택한다.
- Jenkins hook url을 추가하는 란에 "http://{본인의 ip}:8080/jenkins/github-webhook/" 을 입력하고, Active에 체크 한 후 서비스를 추가한다.
- Github프로젝트 Webhook 추가
- 마찬가지로 Github프로젝트의 Setting에서 Webhooks 탭으로 진입한다. Add webhook 버튼을 누른다.
- Payload URL에 "http://{본인의 ip}:8080/jenkins/github-webhook/" 입력하고, Content type을 선택한다. 아래의 Just the push event에 체크한 이유는 Github repo에 push 이벤트가 일어날 경우 이 웹훅을 유발시키기 위함이다. webhook을 추가한다.
- 젠킨스 프로젝트 구성의 Build Trigger 설정
- 젠킨스 프로젝트의 구성 탭으로 이동하여, GITScm polling을 위한 Github hook trigger를 빌드 유발 설정으로 선택한다. 이 선택은 위의 SCM(소스 코드 관리) 탭에서 연동한 Github 저장소에서 push에 의한 hook 이벤트가 발생할 경우 저장소를 polling해서 젠킨스의 자동 빌드를 유발한다.
- Jenkins 파이프라인 프로젝트
- New Item을 누릅니다.
- Pipeline을 선택하고 프로젝트의 이름을 입력 합니다. 저는 a_app_build_and_deploy 로 했습니다. a_app이라는 앱을 배포한다는 시나리오 입니다.
- 이 프로젝트에서 해볼 것은 git pull까지 입니다. 다른 설정은 그냥 놔두고 git과 연동만 해보겠습니다.
- 아래 화면에서 Definition 아래에 있는 항목을 'Pipeline script from SCM'으로 바꿔줍니다.
- 그리고 SCM아래에 있는 칸을 Git으로 바꿔주면 Repository URL을 입력하는 화면이 나옵니다.
- Jenkinsfile
echo "---build start---"
stage('Checkout Stage') {
echo "---Checkout---"
}
stage('Build Stage') {
echo "---Build Stage---"
docker container ls
}
stage('Push Stage') {
echo "---Push Stage---"
}
- Jenkins Pipeline빌드를 하기 위해서는 Jenkinsfile을 만들어 주어야 합니다.
- 위 Jenkins스크립트는 docker container ls 명령어 때문에 빌드중에 에러가 납니다. 에러가 나는 부분을 보고 싶지 않다면 저 줄을 빼고 진행 해주세요.
- 저는 위 Jenkinsfile이 Root(/)에 포함 되어 있는 리포지토리 주소를 넣을 것입니다. 아래 주소입니다.
- github.com/repogithub/repository
- 위 repository의 구조는 아래와 같습니다.
- .├── Jenkinsfile├── app│ ├── dev│ │ └── Jenkinsfile│ └── prd│ └── Jenkinsfile└── dep
- 간단 설명을 드려보면 Root인 / 아래에 Jenkinsfile이 있고 app/dev, app/prd각각에도 Jenkinsfile이 있습니다. 이 세가지 Jenkinsfile중 어떤 것을 사용할 것인지는 아래 설정에서 Script Path부분에서 설정 할 수 있습니다.
- Repository Url을 넣고 Branch를 선택 해줍니다. 기본값은 master입니다.
- 그리고 중요한 것은 Script Path입니다. 기본 설정은 git repository의 Root에 있는 Jenkinsfile을 읽어오라는 뜻입니다.
- 완료 되었으면 'Save'버튼을 눌러서 Jenkins 프로젝트를 생성 해줍니다.
- 여기에서 'Build Now'를 누릅니다.
- Jenkins 파이프라인 vs 프리스타일
- 기존 프리스타일 방식과는 다르게 스크립트 형태의 코드로 job을 구성할 수 있도록 지원
- 젠킨스 파이프라인은 젠킨스에 continuous delivery piplines를 구현하고 통합하는 플러그인
- 파이프라인은 일반적으로 텍스트 파일로 작성이되고 이걸 젠킨스 파일이라고 한다.
- 파이프라인 생성
- 새로운 item을 생성한다.
- Multibranch Pipeline으로 선택한다.
- add Source 버튼을 클릭하고 깃허브에서 레포지토리를 클릭해서 넣어준다.
- save 버튼을 눌러 저장한다.
'Engineering WIKI > Docs' 카테고리의 다른 글
SOLID 5가지 설계 원칙 (0) | 2023.05.27 |
---|---|
퍼사드 패턴 (Facade Pattern) 개념 및 코드 예제 (0) | 2022.12.30 |
Redis 뿌수기! (0) | 2022.12.30 |
쿠키와 세션 그리고 JWT (0) | 2022.12.30 |
HTTP 메소드 (0) | 2022.12.18 |
소프트웨어 개발 방법론 - 애자일(Agile) 방법론 (0) | 2022.12.18 |
IntelliJ Gradle import 시, 오류 해결 방법 : Unable to find method (2) | 2022.12.11 |
Intellij (No newline at end of file) (0) | 2022.12.11 |