[Jenkins] 젠킨스 설치 및 설정

2018. 6. 26. 15:44Basic/etc

반응형

젠킨스 설치

기존 배포 방식

기존 배포 방법은.

  1. 수정된 사항을 Git에 feature 브랜치에 Push.

  2. 로컬 환경에서 프로젝트를 빌드.

  3. 빌드 완료된 추출물(jar 또는 war)를 테스트 서버로 전송.

  4. 배포 스크립트를 통해 배포.

  5. 테스트를 진행.(수정 사항이 있다면 1~5 반복)

  6. 테스트 완료된 버전을 release 브랜치에 Push.

  7. 버저닝 후 로컬 환경에서 프로젝트를 빌드.

  8. 다시 빌드 완료된 추출물을 중앙 관리 서버로 전송.

  9. 중앙 배포 스크립트를 실행하여 QA 서버로 복사 및 배포.

  10. QA 진행.(수정사항이 있다면 6~10 반복)

  11. 중앙 배포 스크립트를 실행하여 Product로 복사 및 배포.(무중단 배포 포함)


1. 젠킨스(Jenkins)란?

  • 지속적인 통합 CI(Continuous Integration) Server이다.

  • 자바(Java)를 기반으로 만들어 졌으며 Open source이다.

  • 다양한 플러그를 제공한다.

  • subversion, git등 소스 툴과 Maven, Gradle등 빌드 툴을 지원한다.

2. 젠킨스(Jenkins)를 설치하기 위해 필요한 준비물

아래의 모든 프로그램을 설치하기를 바란다.

3. 젠킨스(Jenkins) 다운로드 하기

NO Image

4. 젠킨스(Jenkins) War File을 WebServer로 구동하기

위 예제는 WebServer를 Tomcat을 사용할 예정이다.

  • Tomcat Home위치에 Webapps에 Jenkins.war를 위치시킨다.

NO Image

  • Tomcat을 구동하면 Jenkins 디렉토리가 생성된다.

NO Image

5. 젠킨스(Jenkins) 접속하기

NO Image

Error - 아래와 같은 화면이 처음이라면?

NO Image

초기 비밀번호를 다시 설정해 줘야 합니다.

경로 : C:Users/사용자/.jenkins/secrets/initialAdminPassword

NO Image

Password 입력

NO Image

plugins 설치

 

Admin 계정 생성.

NO Image

Jenkins 설치 완료!

NO Image

 

Tomcat 설정

젠킨스의 배포를 담당하는 tomcat을 사용하기 위해 tomcat manager를 접근 할 수 있도록 tomcat-users.xml을 수정한다

tomcat-users.xml을 열고

<role rolename="manager-gui"/>

<role rolename="manager-script"/>

<role rolename="manager-jmx"/>

<role rolename="manager-status"/>

<role rolename="admin-gui"/>

<role rolename="admin-script"/>

<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>

위 문구를 추가 하여 admin에게 권한을 부여 한다

 

젠킨스 설정

Jenkins 관리 - Global Tool Configuration

각 필요부분 설정 ( ex. JDK, Git, Maven, Gradle.. )

 

젠킨스 프로젝트 생성 및 설정

 

install 과 package의 차이
- install은 maven local repository(ex. .m2/repository)에도 배포됨.

참고
- http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:dev:dep:build:maven

 

  • Ant 빌드 설정

  • Ant 로 빌드 시, 프로젝트 내에 build.xml 파일이 반드시 필요함.


ex)





  • Maven 빌드 설정

  • maven으로 빌드 시, 프로젝트 내에 pom.xml 파일이 반드시 필요함.

  • jenkins에서 빌드 시 properties 내의 Encoding 값을 반드시 설정.

  • src/main/java 안에 mapper가 있다면 build 내에 resource를 추가해야함.

ex)

 

maven 단점
- 모든 dependency를 작성해야 함. ( 동적 작성 불가 )
프로젝트 구성/빌드 툴로써 프로젝트 구성은 정적인 설정 정보이고 빌드는 동적인 행위이다.
그런데 이것을 정적인 데이터를 저장하는데 적합한 XML로 그 내용을 기술하게 함으로써 동적인 행위인 빌드에 크나큰 제약을 가한다. 게다가 XML은 실제 설정 내용보다 XML 뼈대가 더 많다.

- 상속 구조를 사용하여 멀티 모듈을 구현함.
상속 구조는 공통 설정을 여러 프로젝트가 공유할 때 비어있는(Abstract) 프로젝트를 만들어서 거기에다 공통 설정을 넣고 그걸 상속하게 해야한다. 게다가 어느 플러그인의 설정이 조금만 달라도 해당 플러그인이 아주 유연하게 만들어져 있지 않은 이상 설정을 분리해서 프로젝트별로 중복 기술해야 한다. 즉, Maven을 사용하면 쓸데없이 설정이 길어지고 중복이 발생하며 가독성도 매우 떨어진다. 

  • Gradle 빌드 설정
    - jdk 7 이상
    - 구성 주입 방식 (Configuration Injection)
    어떤 프로젝트 구성 정보가 있으면 그것을 필요한 프로젝트에 주입하는 방식이다. 주입시 프로젝트의 조건을 체크할 수 있어서 프로젝트 별로 약간 다른 설정이 가능하다. 또한 공통 구성만 주입하고 프로젝트 별로 다른 점은 바로 그 점만 프로젝트 별로 주입시켜주면 된다.

pom.xml -> build.gradle로 변환

# 프로젝트 폴더 (pom.xml이 있는곳) 으로 이동
gradle init --type pom



위와 같이 하면 project name 및 dependencies 등이 gradle용 build script로 변환이 되고 프로젝트가 gradle를 사용가능하도록 설정된다 (꼭 import할때 build.gralde를 선택하자)

build.gradle 수정

  1. 웹배포용이므로 apply plugin: 'war' 를 추가 한다.

  2. sourceSets를 지정해 빌드 옵션에 맞추어 특정 resource를 로드 하게 설정 한다.
    sourceSets {
       main.java.srcDirs=['src/main/java']
       main.resources.srcDirs=['src/main/resources', 'src/main/resources-' + target]
    }

  3. war파일명 지정과 webContent 패스를 지정한다.
    war {
       archiveName 'api.war'
       from 'webapp' // adds a file-set to the root of the archive
    }

완성된 build.gradle



빌드

빌드옵션

빌드 결과물은 build/libs/test.war 로 확인 할 수 있다.

정적 분석 툴 - SonarQube

sonaqube설치

https://www.sonarqube.org/downloads/

1. sonarqube install

- wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.7.1.zip
- unzip sonarqube-6.7.1.zip

2. sonarqube scanner  install

-wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.0.3.778-linux.zip
- unzip sonar-scanner-cli-3.0.3.778-linux.zip

https://docs.sonarqube.org/display/SCAN/Analyzing+Source+Code

 

sonarqube login token 생성

 

sonarqube project 생성

jenkins plugin install

- jenkins관리->플로그인관리-> SonarQube Scanner for Jenkins
- https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins

jenkins setting

- 환경설정

-Global Too lConfiguration

 

- project build setting (빌드)

 

 

sonarqube project properties

- sonar-project.properties

source 폴더의 ROOT쪽에 위치하도록 합니다.

 

--------결과------

 


반응형

'Basic > etc' 카테고리의 다른 글

[Jenkins] 빌드 자동화 설정  (1) 2019.12.09
[CI] Docker + Jenkins + Slack 사용하여 자동빌드 환경 구성  (0) 2018.06.15
[SQLD] 요약 사이트  (0) 2018.02.13
MySQL 원격접속 허용  (0) 2017.05.29
Database의 특징  (0) 2016.11.09