환경 설정

Jenkins 관리 메뉴

젠킨스를 설치했으므로 사용하기 위해 필요한 설정을 해보자.

좌측의 Jenkins 관리 를 클릭하면 다음과 관리 메뉴가 표시된다.

관리 메뉴를 처음 보는 독자들은 굉장히 많은 설정 항목을 보면 어떻게 설정해야 하는지 감이 안 잡힐 것이다. 이제 중요 설정 항목부터 차근 차근 하나씩 따라가 보자.

일반적으로 많이 사용하게 되는 관리 메뉴는 볼드체로 표시했으며 각 관리 메뉴별 주요 기능은 다음과 같다.

메뉴용도
시스템 설정

환경변수 및 경로 정보등을 설정하는 메뉴로 젠킨스 동작에 필요한 주요 설정을 하게 된다.

Configure Global Security

권한 및 접근 통제를 설정해서 젠킨스 보안을 강화하는 메뉴이다.

Reload Configuration from Disk

메모리에 로딩된 모든 데이타를 버리고 파일 시스템에서 새로 로딩한다. 관리 메뉴에서 설정을 변경하지 않고 설정 xml 을 에디터로 직접 수정했을 때 사용할 수 있지만 설정 xml 을 직접 수정하는 건 권장하지 않는다.

플러그인 관리

젠킨스의 기능을 확장하기 위한 플러그인을 추가, 제거, 업데이트, 사용, 미사용으로 설정할 수 있다.

시스템 정보

문제 해결을 돕기위한 다양한 환경 정보를 보여줍니다.

System Log

java.util.logging 패키지로 기록한 시스템의 로그를 보여준다.

부하 통계

리소스 이용 현황을 표시한다. 빌드를 위해 추가로 컴퓨터가 필요한지 판단하는데 도움이 된다.

Jenkins CLI

스크립트나 쉘로부터 젠킨스를 관리한다. 보통은 사용할 일이 거의 없다.

Script Console

관리 콘솔에서 그루비 스크립트를 실행하여 관리나 진단/문제 해결을 진행한다. 그루비를 알아야 하며 젠킨스의 내부도 이해해야 한다.

노드 관리

젠킨스는 분산 빌드를 지원하며 빌드에 참여하는 젠킨스 노드를 추가, 삭제, 관리와 모니터링 할 수 있는 메뉴이다.

Manage Credentials

젠킨스와 잡이 실행될 때 ssh 서비스나 WAS 등 외부 서비스에 연결해야 하는 경우가 있다. 이런 업무를 자동화하기 위해 사용하는 아이디/암호나 개인키/공개키를 설정 및 관리하는 메뉴이다.

About Jenkins

버전과 라이선스 정보를 표시한다.

Manage Old Data

예전 플러그인이나 데이타를 관리한다.

끄기전 준비

젠킨스를 종료하기 전에 이 메뉴를 실행하면 새로운 빌드를 하지 않으므로 기존 빌드가 끝나면 안전하게 젠킨스 시스템을 내릴수 있다.

시스템 재부팅등 중요한 유지보수 작업이 있을 때 사용하면 된다.

종료를 취소하려면 클릭후 메뉴명이 "Cancel Shutdown" 으로 변경되어 있을텐데 다시 클릭해 주면 된다.

 

시스템 설정

이제 시스템 설정 메뉴로 들어가 보자. 여기는 형상 관리, JDK, 메이븐등 젠킨스가 동작하는데 꼭 필요한 중요한 설정 메뉴이다.

홈 디렉터리

젠킨스의 홈 디렉터리를 확인할 수 있으며 변경은 할 수 없다. JENKINS_HOME 환경 변수를 설정하고 젠킨스를 구동하여 외부 디렉터리로 설정된 것을 확인할 수 있다.

시스템 메시지

젠킨스의 대시보드에 표시되는 메시지를 설정할 수 있다. 공지 사항의 용도로 사용하면 된다. 젠킨스 1.538 버전부터는 보안때문에 HTML 을 적어도 텍스트로 처리하므로 형식을 줄 수 없다.

HTML 태그를 사용할 수 있게 하려면 보안 설정을 변경해야 하므로 Configure Global Security 항목에서 이 부분을 알아 보도록 하자.


 

# of executors

동시에 빌드를 진행할수 있는 쓰레드의 갯수를 의미한다. 기본 값은 2이며 이 경우 동시에 2개의 빌드를 진행할 수 있다.

젠킨스를 구동하는 하드웨어의 사양이 넉넉하다면 크게 해주는 게 좋다. 일반적으로는 전체 코어 갯수보다 작게 하여 사용하고 있다.

전체 코어 갯수는 물리적인 CPU 갯수(소켓) 에 CPU당 코어수를 곱하면 된다. 서버라면 보통 2소켓이상을 사용하며 코어수는 CPU 의 모델마다 다르다.

2소켓 CPU 를 사용하며 소켓당 코어가 4 라면 전체 코어수는 8 이 되며 # of executors 는 이것보다 작게 주는게 좋다.

현재 장비의 자세한 CPU 정보는 lscpu 명령어를 통해서 확인할 수 있다.

빌드의 규모나 갯수는 팀이나 회사마다 다르므로 이건 정답이 없고 모니터링을 통해 수치를 조정해야 한다. 부하 통계 메뉴를 참고하여 수치를 조정하자.

Quiet period

지속적인 통합 서버는 빌드시마다 버전 관리 서버의 변경 사항을 확인하고 빌드를 하게 된다. 값이 설정되면 새로운 빌드가 있을때  설정한 초만큼 대기한다. 다음과 같은 상황에서 유용할 수 있다.

  • 버전 관리로 CVS 를 사용할 경우 꼭 설정해야 한다. 버전 관리 장에서 설명했듯이 커밋이 change-set 이 아니고 개별 파일마다 커밋된다. 동시에 수많은 파일을 커밋할 경우 CVS 의 특성상 전체 커밋이 완료되지 않아도 업데이트가 가능하며 이럴 경우 빌드가 실패할 수 있다. 
  • 버전 관리 스타일이 체인지 셋으로 커밋하지 않고 개별 파일별로 따로 커밋하는 경우 서브버전을 사용하더라도 이 값을 길게 설정하는게 좋다.
  • 빌드가 많고 매우 바쁜 젠킨스 서버일 경우 이 값을 늘려서 빌드의 수를 조절하는 역할로 사용 할 수 있다.

SCM checkout retry count

버전 관리 시스템에서 체크아웃에 실패할 경우 재시도를 몇 번 할지 여부이다. 0은 재시도를 하지 않는다. 기본 값은 0 이며 특별한 이유가 없지 않으면 수정할 필요가 없다.


Global properties

  • Environment variables
    사용할 환경 변수를 key=value 형식으로 지정할 수 있다. 특정 빌드에 환경 변수가 필요하다면 이 메뉴에서 설정할 수 있다. 
  • Tool Locations
    노드에 설치된 툴(git, JDK) 이 마스터 서버와 다를 경우 툴 경로를 설정한다.


Maven Configuration

  • Default settings provider
    메이븐 설정 파일(.m2/settings.xml)의 경로나 파일명이 다를 경우 Use default maven settings 대신 Settings file in filesystem 을 선택하고 설정 파일의 절대 경로를 입력해야 한다. 일반적으로는 수정할 일이 거의 없다.
  • Default global settings provider
    메이븐의 전역 설정은 메이븐 설치 경로의 conf 디렉터리 밑에 settings.xml 이다. 다른 설정 파일을 사용하는 메이븐일 경우 Use default global maven settings  대신 Global Settings file in filesystem  을 선택하고 설정 파일의 절대 경로를 입력한다.

 

JDK 설정

JDK 설정은 젠킨스를 이용하여 빌드를 수행할 때 사용할 JDK 를 의미한다. 프로젝트마다 요구하는 JDK 가 다를수 있으므로 JDK 설정 메뉴에서 이런 요구 사항을 충족할 수 있다.

필요한 JDK 이미 설치되어 있다면 이름과 경로를 설정하면 되며 만약 설치되어 있지 않다면 젠킨스를 통해서도 설치가 가능하다.

JDK가 젠킨스가 구동되는 시스템에 이미 설치되어 있으면 다음과 같이 해당 JDK 를 식별할 NameJAVA_HOME 경로를 설정해 주면 된다.

여러 개의 JDK 를 설정할 경우 하단의 Add JDK 를 클릭하면 JDK 설정 화면이 추가된다.

필요로 하는 JDK 가 없을 경우 Install automatically 를 클릭하면 JDK 를 설치할 수 있는 화면이 표시된다.

 

그러면 자동으로 JDK 를 설정하는 방법을 알아 보자. 사전에 준비할 사항은 자동으로 JDK 설치시 오라클의 자바 사이트에서 다운로드 받으므로 오라클 웹사이트에 계정이 있어야 한다.

오라클 웹사이트(www.oracle.com)에 연결후 상단의 Sign In/Register 메뉴를 클릭하여 계정을 생성해 두자. 이제 준비가 되었으면 JDK 설정 메뉴에서 Add JDK 를 눌러서 새로운 JDK 를 추가하는 화면을 띄우자.

 

이제  Install automatically 를 클릭하여 JDK 설정창을 띄우고 Name 항목에 JDK 의 이름을 입력한다.

그리고 Version 에서 설치할 JDK 를 찾아서 선택한다. 예제에서는 JDK 1.6.45 버전을 설치하며 이름을 6u45 로 설정했다.

하단의 I agree to the Java SE Development Kit License Agreement 를 체크한 후에 하단의 enter your username/password 를 클릭하여 미리 생성한 Oracle 계정 정보를 입력하고 OK 를 누른다.

이제 하단의 저장을 눌러서 설정을 저장하자. 자동 설치로 등록한 JDK 는 바로 설치하지 않고 해당 JDK 를 사용하는 빌드가 있을 때 젠킨스가 다운로드후 설치한다.

설치하는 경로는 $JENKINS_HOME/tools/hudson.model.JDK 디렉터리 밑에 위에 설정한 Name 이름의 디렉터리이다. 위에서 6u45 로 설정했으므로 최종 설치 경로는 $JENKINS_HOME/tools/hudson.model.JDK/6u45/ 가 된다.

 

Ant

빌드를 ant 로 한다면 설정하도록 하자. JDK 처럼 ant 도 자동 설치할 수 있다. ant 자동 설치는 별도의 로그인 정보 설정이 필요 없다.

 

Maven

메이븐 실행 파일의 이름과 경로를 설정하는 메뉴이다. JDK 처럼 여러 개의 메이븐을 설정할 수 있다. 미리 설치한게 없다면 자동 설치도 가능하다. 다음은 두 개의 메이븐을 자동 설치로 설정한 화면이다.

Maven Project Configuration

전역 메이븐 실행 옵션과 설정을 할 수 있는 메뉴이다.


  • Global MAVEN_OPTS
    전역으로 설정해야 하는 메이븐 실행 옵션이 있다면 프로젝트별로 설정하지 말고 여기에 설정해 주자. 넥서스 항목에서 잠깐 메이븐 연계에 대해서 다룬걸 기억할 것이다.
    메이븐 3.0.5 버전부터는 https 일 경우 인증서의 유효성을 검증하여 빌드가 실패할 수 있으므로 다음과 같이 MAVEN_OPTS 를 설정해야 한다고 하였다.
    export MAVEN_OPTS="-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true"
    이런 전역 설정이 필요하면 여기에 설정하면 된다.
  •  Local Maven Repository
    넥서스에서 설명한 메이븐의 3가지 저장소 타입중 하나인 로컬 저장소를 설정하는 메뉴이다. 기본 설정은 .m2 이며 특별한 이유로 다른 디렉터리를 사용하고 있을 경우 설정하자. 

Jenkins Location

  • Jenkins URL
    젠킨스가 구동되는 서버의 URL이다. 이미지나 링크등이 깨지지 않기 위해서는 제대로 설정이 필요하다. 확인해 보고 서비스와 다른 URL 이 표시되면 제대로 설정해 주자.
  • System Admin e-mail address
    프로젝트 관리자에게 젠킨스가 통지 메일을 보낼 때 보내는 이가 여기 등록한 이메일 주소로 설정된다. 
    "foo@example.com" 이나 "Jenkins Daemon <foo@example.com>" 형식으로 설정하면 된다.

SSH Server

  • SSHD Port
    젠킨스를 커맨드 방식으로 사용할 때 ssh 를 통해서 연결하게 되며 이때 필요한 설정이다.

CVS 설정

CVS 를 버전 관리로 사용할 때 필요한 설정이다. CVS 를 사용하는 환경은 거의 없을 테니 넘어 가도록 하자.

Subversion 설정

서브버전을 사용할 경우 설정이다. 젠킨스가 구동되는 시스템에 서브버전이 설치되어야 한다.

  • Subversion Workspace Version
    서브버전의 버전을 설정한다. 1.7 부터 많은 개선이 이루어졌고 .svn 저장소의 메타 데이타 구조가 간단해 졌으므로 1.7 이상을 사용하기를 권장한다.
  • Exclusion revprop name
    젠킨스는 서브버전 저장소를 주기적으로 확인하여 변경 내역이 있으면 트리거 방식으로 빌드할 수 있다. 이때 특정 리비전 프로퍼티가 설정되었을 경우 빌드를 하지 않을수 있다. 여기에 프로퍼티 이름을 설정할 하여 특정 커밋은 빌드하지 않고 무시할 수 있다. 이 기능을 사용하려면 서브버전 서바가 1.5 이상이어야 한다.

 

여기까지 읽은 독자중에 git 을 사용하는 독자들은 왜 git 설정이 빠져 있을까 의아할 것이다.

아쉽게도 git 은 기본 탑재되지 않고 별도로 설치해야 하는 플러그인이다. 플러그인 항목에서 git 플러그인을 설치하고 git 설정을 진행해 보자.

Shell

젠킨스가 사용할 쉘이 /bin/sh 가 아닌 다른 경로에 있을 경우 설정하며 일반적으로는 설정할 필요가 없다.

 

E-mail로 알려줌

이메일로 통지를 보낼 때 사용할 서버의 정보이다. 

  • SMTP 서버
    SMTP 서버의 주소를 설정한다. 비워둘 경우 localhost 를 사용하게 된다. 젠킨스는 javamail 패키지를 사용하므로 프로퍼티를 설정하여 javamail 의 동작을 제어할 수 있다.
    이런 프로퍼티 설정이 필요하면 상단의 Global properties -> Environment variables 에 설정할 수 있다.
  • Default user e-mail suffix
    프로젝트 참여자가 동일한 도메인의 메일을 사용할 경우에 여기에 메일 서버 도메인을 접미사로 설정할 수 있다. @example.com 으로 설정하면 메일 송신자를 foo 라고 적으면 자동으로 foo@example.com 으로 변환된다.