윈도우 환경에서 Jenkins로 로컬 개발환경을 구축
시스템 환경
- Windows 10 Pro 64Bit
- WSL2 & Ubuntu
- Docker Desktop
- SourceTree & Git Bash
젠킨스 설치
Jenkins download and deployment
Jenkins download and deployment The Jenkins project produces two release lines: Stable (LTS) and regular (Weekly). Depending on your organization's needs, one may be preferred over the other. See the links below for more information and recommendations abo
www.jenkins.io
윈도우에서 젠킨스 설치 하기 - Install Jenkins For Window OS
윈도우에서 젠킨스 설치하기사전 준비사항Java 8 또는 Java 11의 환경이 필요(OpenJDK 11으로 시도해 보았는데 플러그인 설치에서 오류가 많이 발생)만약 오라클JDK를 사용하실 경우에는 JDK 유료화된
velog.io
LTS 버전으로 다운받고 설치까지 진행했다.
설치 진행 시 주의사항


설치가 완료되면 설정한 포트의 로컬호스트 주소로 들어가면 패스워드를 입력하는 페이지가 나타난다.

ProgramData 폴더는 기본적으로 숨김폴더이다. 폴더 찾을때 숨김 폴더 해제 후 확인 할 것
이후 관리자 계정을 생성하면 젠킨스를 사용 할 수 있다.
젠킨스 환경설정 셋팅
Github를 쓰면 이 부분은 생략해도 되는 부분이다.
여기서는 Bitbucket으로 형상관리가 되어있는 저장소를 접근해야되서 플러그인을 설치하는 과정이 필요하다.
Dashboard → Jenkins 관리 → Plugin Manager

이미 설치된 모습인데 설치 가능 탭으로 이동 후 설치를 하면 된다.
설치 후 재시작할지 묻는데 재시작하지 않아도 이용이 가능하므로 다시 대시보드로 이동하면 된다.
이제 JDK를 셋팅해야 된다.
Dashboard → Jenkins 관리 → Global Tool Configuration
항목에 JDK가 보이는데 여기서 JDK installations를 클릭

프로젝트 개발환경에 따라 JDK 버전이 다를 수 있으므로 여기서는 jdk8 jdk11 버전을 추가했다.
경로는 JDK가 설치된 로컬 경로
젠킨스 Item 등록 (프로젝트 연결)
대시보드 메인 페이지에서 새로운 Item을 클릭하면 등록페이지로 이동이 된다.
Freestyle project를 선택 후 이동하자
General에서는 아래 항목만 신경쓰면 된다.

System으로 하면 jenkins를 설치할 때 선택했던 JDK 버전으로 적용이 된다.
위와 같이 해당 프로젝트의 JDK 버전에 따라 설정을 해주도록 한다.
소스코드 관리 항목을 설명해보면

Git Repository 주소 및 계정 정보를 입력해주도록 한다.
계정 정보는 Credentials에서 ADD를 클릭하면 생성 할 수 있다. (Bitbucket 계정 정보 입력)
브랜치는 어떤 브랜치의 내용이 변경되었을때 빌드를 할 지 선택 후 작성하면 된다.
만약 개발서버라면 develop 브랜치가 있을테고 develop 브랜치에 푸쉬되었을때 빌드를 진행하도록 한다.

참고로 Bitbucket에서는 위 웹훅 설정을 꼭 추가해주도록 한다. (이거 안하면 의미가 없음)
http://{URL}:{PORT}/bitbucket-hook/
뒤에 슬래시 꼭 입력
빌드 유발? 이라고 나오는 항목에서는 Bitbucket 항목을 체크해주도록 한다 (플러그인 설치해야 나옴)

이제 이후 단계를 작성해보면 Build Steps에서 Gradle Task 명령어를 작성하도록 한다.

위 단계까지 진행했으면 다음단계는 생성한 jar파일을 실행해야한다. (배포)
배포를 하기위해서는 다양한 방법이 있지만, 여기서는 현재 실행중인 서버를 종료 후 새로 빌드한 jar로 배포 진행
윈도우 환경이다보니 배치파일을 실행해서 프로세스를 종료해야하는데 이부분이 까다로웠다.
tasklist로 하려고했으나 내가 종료하고자하는 프로세스가 어떤건지 확인이 불가능했다.
(백그라운드로 실행된 프로세스라서 그런지 타이틀 설정을 해도 타이틀이 설정되지 않았다.)
결국 cmd 명령어를 다 찾아봐서 해결
아래와 같이 프로세스를 찾아서 종료했다.

FOR /F "tokens=5 delims= " %%P IN ('netstat -ano ^| findstr 0.0.0.0:7000 ^| findstr LISTENING') DO taskkill /F /PID %%P
배치파일 작성 시 주의해야할 점은 %%P 가 찾은 값을 넣어주는 변수인데
cmd에서 직접 명령어로 할때는 %로 작성하고 배치파일은 %% 두개를 써줘야 한다.
설정된 포트와 활성화중인 프로세스를 찾아서 %%P에 넣어줘서 taskkill 입력
마지막으로 빌드 후 조치를 작성하면 된다. → Post build task 선택

빌드를 성공하면 로그 텍스트에서 SUCCESS가 출력되는 것을 알 수 있다.
그 조건으로 성공하면 아래 스크립트를 실행한다는 내용이다.
스크립트는 jar를 찾아서 변수에 넣어주고 실행하는 내용이다.
for /f "tokens=5 delims= " %%s IN ('dir /p /s C:\ProgramData\Jenkins\.jenkins\workspace\jenkins-test\build\libs\*.jar ^| findstr jenkins') do set jarfile=%%s
start /b "jenkins-dev" java -jar C:\ProgramData\Jenkins\.jenkins\workspace\jenkins-test\build\libs\%jarfile% >> jenkins-test.log &
이렇게 셋팅하면 내가 설정한 원격 브랜치에서 커밋 & 푸쉬 내역이 체크되면 자동으로 빌드가 되고 배포를 실행한다.
젠킨스의 역할이 처음에는 정확하게 이해가 안되었지만, 이렇게 직접 셋팅을 해보니 많은 도움이 되었다.
'DevOps' 카테고리의 다른 글
| AWS EC2 설정 및 도메인 적용 그리고 배포까지 (2) (0) | 2022.11.10 |
|---|---|
| AWS EC2 설정 및 도메인 적용 그리고 배포까지 (1) (0) | 2022.11.10 |
| Docker 기본 (Dockerfile 작성 및 컨테이너 실행까지) (0) | 2022.10.28 |
| 게이트웨이 (Gateway)란? (0) | 2022.10.25 |
| MSA 개념 정리 (0) | 2022.10.25 |