Jenkins, Gitlab, Tomcat

murkgom·2022년 10월 24일
0
post-custom-banner

설치 및 초기 설정

다운로드 및 설치

다운로드 : https://www.jenkins.io/download/
설치시 Logon Type : Run service as LocalSystem(나중에 변경 가능)

home 변경

설정 파일 위치 : {{설치 경로}}/jenkins.xml
변경 후 서비스 재시작

첫 접속

  1. 서비스 실행 확인 후 설정했던 port 번호로 접속
    ex) localhost:31313
  2. unlock

    빨간 색으로 표시된 경로의 파일을 열고, 안의 내용을 복사해서 붙여넣기

Setup Plugins

알아서 잘...

관리자 계정 생성

알아서 잘...

Gitlab 연동

Plugin 설치

Jenkins 관리 > 플러그인 관리
Gitlab 검색 후 설치

Gitlab Access Token 생성

내가 사용 중인 Gitlab 페이지(젠킨스 아님) > User Setting > Access Tokens
Name & Expires at & Scopes 설정 후 Create

Gitlab 설정

Jenkins 관리 > 시스템 설정

  • Connection name : 아무거나
  • Gitlab host URL : host URL. (repository 주소 아님. host까지만)
  • Credentials
    • [Add] 클릭
    • Kind : GitLab API token
    • API token : 2. 에서 생성했던 token
    • ID : 식별할 id 아무거나
    • Description : 알아보기 용이한 내용

확인

Test Connection 클릭 > Success 확인
저장

프로젝트 추가

Item 생성

새로운 Item
item name 입력 & 유형 선택
(잘 모르겠으면 Freestyle project 선택)
Dashboard 가보면 추가되어있음

Gitlab 연동

해당 item > 구성
> 소스 코드 관리 > Git 선택
1. Repository URL : Gitlab Repository URL 입력
2. Credentials 생성

  • Kind : Username with password
  • Username : Gitlab의 username
  • Password : Gitlab의 password
  1. Credentials 선택
  2. Branches to build : 빌드 대상이 될 특정 브랜치

확인

Dashboard > 해당 item
[지금 빌드] 클릭 후 확인

프로젝트 Gradle 빌드 설정

For what?

  1. Tomcat 배포를 위해 War 생성이 필요
  2. Gitlab에 있는 프로젝트의 Gradle build 결과물이 War

Gradle version 설정

Jenkins 관리 > Global Tool Configuration > Gradle
1. [Add Gradle] 클릭
name : 알아서 잘...
Install > Version : 프로젝트의 Gradle 버전에 맞추는 것이?
Gradle 버전 확인?

  • Terminal > ./gradlew -v
  • gradle-wrapper.properties 파일에서 확인
  1. [저장]

프로젝트 내 설정

해당 item > 구성 > Build Steps
1. Invoke Gradle script 선택
2. Gradle Version 선택
3. Tasks : 알아서 잘...
ex) clean bootWar
4. 저장

확인

Dashboard > 해당 item
1. [지금 빌드] 클릭
2. {{jenkins workspace}}\{{프로젝트명}}\build\libs 내 war 파일 확인

Tomcat 배포 연동

Plugin 설치

Jenkins 관리 > 플러그인 관리
Deploy to container 검색 후 설치(재부팅 필요)

Tomcat 내 User 정보 설정

Tomcat 설치 경로\conf\tomcat-users.xml

<tomcat-users>
  <user username="유저명" password="비밀번호" roles="manager-script">
</tomcat-users>

사용자 추가 후 서비스 재시작

프로젝트 내 설정

해당 item > 구성 > 빌드 후 조치
1. Deploy war/ear to a container 선택
2. WAR/EAR files : 빌드 후 생성되는 war 파일의 위치

  • jenkins의 workspace/item이 root
  • ex) **/*.war
  1. Context path : tomcat상의 context path
  2. Containers : [Add Container] > 버전에 맞게 선택
  3. Credentials : [Add] 후 tomcat-users에서 추가했던 정보를 기반으로 생성(kind : Username with password), 선택
  4. Tomcat URL : tomcat 서비스 URL

확인

Dashboard > 해당 item
1. [지금 빌드] 클릭
2. {{Tomcat URL}}\{{Context Path}} 접속, 확인

Node 사용시 설정

Plugin 설치

Jenkins 관리 > 플러그인 관리
NodeJS Plugin 설치

Global Tool 설정

Jenkins 관리 > Global Tool Configuration > NodeJS > NodeJS installations...
1. [Add NodeJS] 클릭
2. Install automatically 체크
3. Name 입력, Version 선택 후 저장

프로젝트 내 설정

해당 item > 구성 > 빌드 환경
1. [Provide Node & Npm bin/folder to PATH] 체크
2. NodeJS Installation 선택(Global Tool에서 설정했던 Name) 후 저장

Gitlab Webhook 설정

프로젝트 내 설정

해당 item > 구성 > 빌드 유발
1. Build when a change is pushed to GitLab.... 체크
2. webhook URL 복사해두기
3. 알아서 잘 설정...
ex) Push Events, Filter branches by name 설정 등
4. [Generate] 클릭 후 Secret token도 복사 후 저장

GitLab 내 설정

해당 프로젝트 > setting > Webhooks
1. URL : 프로젝트 내 설정 - 2번에서 복사해둔 webhook URL
2. Secret token : 프로젝트 내 설정 - 4번에서 복사해둔 token
3. 알아서 잘 설정...
ex) Push events 체크
4. [Add webhook] 클릭으로 저장

각종 오류 및 처리

Gradle Project Profile

_해당 item > 구성 > Build Steps > tasks

Wrong

Tasks에 -Pprofile=dev 로 설정

Corrent

Tasks의 고급 > Project properties에 
profile=dev

프로젝트의 Git Repository 오류

Error

Failed to connect to repository : Command ....

Solution
1. repository url 확인
2. jenkins 실행 서버에 git 설치 확인
Dashboard > Jenkins 관리 > Global Tool Configuration > Git

  • Path to Git executable 란에 오류 있는지 확인할 것

Build시 compileJava 오류

Error

* What went wrong:
Execution failed for task ':compileJava'.
> invalid source release: 11

Solution
Dashboard > Jenkins 관리 > Global Tool Configuration > JDK

  • path 잘 잡혀있는지 확인

Tomcat deploy시 오류

Error

Caused by: java.io.FileNotFoundException: {{톰캣 url}}/manager/text/list

Solution
톰캣 > webapps에 manager 폴더가 있는지 확인
없을 경우, 다른 곳에서 복붙!

post-custom-banner

0개의 댓글