Jenkins CI 와 Slack 연동하기

CI/Jenkins 2015. 12. 10. 16:38 by 후뤼한잉여

Jenkins CI 와 Slack 연동하기

1. 개요

Jenkins CI를 적용하면서 빌드에 대한 내용도 슬랙으로 받아보는 테스트를 진행해보고자 설정한 내용을 정리한 문서입니다.
잉여이기 때문에 실무에서 사용하는 내용이 아니지만 나중에라도 써먹거나 누군가한테 도움이 될만한 힌트용으로라도 남기고자 합니다.
기본적인 진행 방법은 GitLab과 Slack 연동하기과 동일하므로 그림은 일체 넣지 않았습니다.

2. Slack 설정

Slack에 접속된 상태(PC 앱, 웹) 기준으로 진행합니다.

  1. Slack 왼쪽 상단에 Slack 도메인 선택
  2. 메뉴 중 [Configure Integrations] 메뉴 클릭
  3. 연동할 서비스 목록에 Jenkins 입력하여 검색
  4. 검색 된 Jenkins CI 클릭
  5. Jenkins CI에서 포스팅할 채널을 선택 후 [Add Jenkins CI Intergration] 버튼 클릭
  6. Team DomainIntegration Token 어딘가에 임시로 기록
    (사실 JenkinsCI와 Slack 두 페이지를 동시에 띄어서 작업하겠지만 메뉴얼 작성시에는 동시 설명이 어려우므로… 기록 한다는 형식으로 작성하였습니다.)
  7. Save Settins 메뉴 클릭

3. Jenkins CI 설정

  1. Jenkins CI 접속
  2. [Jenkins 관리] 메뉴 클릭
  3. [플러그인 관리] 메뉴 클릭
  4. 설치 가능 탭에서 Slack Notification Plugin 플러그인 설치
  5. [Jenkins 관리] 메뉴 클릭
  6. [시스템 설정] 메뉴 클릭
  7. 중간 부분에 Global Slack Notifier Settings에 슬랙에서 발급받은 정보 입력
    • Team Domain : 슬랙 도메인 입력
    • Integration Token : 슬랙에서 발급 받은 토큰 입력
    • Channel : 포스트할 채널 입력. 콤마(,)로 여러 채널 포스팅 지원
    • Build Server URL : 빌드 서버 즉, CI 서버 주소 입력
  8. [저장] 버튼 클릭
  9. Job(프로젝트) 선택
  10. [구성] 클릭
  11. Slack Notifications 부분에 슬랙으로 알림 할 상항을 설정.
    • Notify Build Start : 빌드 시작 시
    • Notify Aborted : 사용자가 임의로 중지 시
    • Notify Failure : 빌드 실패 시
    • Notify Not Built :
    • Notify Success : 빌드 성공 시
    • Notify Unstable :
    • Notify Back To Normal :
  12. [빌드 후 조치 추가] 리스트 박스를 클릭 후 Slack Notifications를 등록
  13. [저장] 버튼 클릭

Jnekins 과 Tomcat 8 연동하여 WAR 파일 배포

CI/Jenkins 2015. 12. 9. 00:37 by 후뤼한잉여

Jnekins 과 Tomcat 8 연동하여 WAR 파일 배포

1. 개요

SSH를 통해 직접 배포를 해도 되지만, 톰캣 컨테이너를 통해 좀 더 자동화를 시키기 위해 설정한 내용을 정리한 문서입니다.

2. Tomcat 설정

톰캣을 외부 또는 웹에서 deploy하기 위해서 deploy관련 서비스에 대해서 권한설정을 해줘야 한다.

vi [톰캣 설치경로]/conf/tomcat-users.xml

세부 설정은 아파치 톰캣 사이트에서 확인이 가능하다.

<tomcat-users>와 </tomcat-users> 사이에 <role>과 <user>를 등록해서 사용해야 한다.
<role>에는 4가지 역할이 존재한다.
1. manager-gui : 톰캣에서 웹으로 제공하는 서비스 이용시 사용한다.
2. manager-status : "Server Status"페이지 접속시에만 사용한다.
3. manager-script : 스크립트를 이용한 배포시 사용하는 듯 하다.
4. manager-jmx : jmx 사용시 사용한다.

대략적인 사용방법은 아래와 같다.

<role rolename="역할명" />
<user username="사용할ID", password="사용할PW" roles="역할명1, 역할명2..." />

Jnekins 연동을 위해서 설정은 아래와 같이 진행하였다.

<tocamt-users>
...
    <role rolename="manager-script" />
    <user username="아이디" password="암호" roles="manager-script" />
</tomcat-user>

3. Jenkins 설정

  1. [Jenkins 관리] -> [플러그인 관리] -> Deploy to container Plugin 플러그인 설치
  2. Job 선택 -> [구성] 메뉴 클릭
  3. 빌드 후 조치 부분에 [빌드 후 조치 추가] 버튼을 클릭 후 Deploy war/ear to a conatiner 선택
  4. Tomcat Deploy 설정 후 저장
    ① WAR/EAR files은 워크스페이스에서 가져올 WAR 또는 EAR파일을 어디에서 어떤 이름으로 가져올지를 설정하는 곳이다.
    ② Context path는 배포시 사용할 컨텍스트를 지정한다. /test로 지정하면 http://URL/test/index.jsp 식으로 접속이 가능해진다.
    현재 톰캣 7.x까지 지원하는걸로 나오는데 7.x 선택 후 8 버전도 사용이 가능하다.
    ③ Container는 사용하는 Container를 선택하는 곳이다.
    ④ Manager username은 앞서 톰캣에서 설정한 아이디를 입력한다.
    ⑤ Manager password도 앞서 톰캣에서 설정한 암호를 입력한다.
    ⑥ Tomcat URL은 톰캣에 접속할 때 사용하는 포트까지의 경로이다. http://IP:포트식을 의미한다.
    

'CI > Jenkins' 카테고리의 다른 글

Jenkins CI 와 Slack 연동하기  (0) 2015.12.10
Jenkins와 SSH를 이용한 배포 연동  (0) 2015.12.08
Jenkins 와 Gradle을 이용한 Build 연동  (0) 2015.12.08
Jenkins HTTPS 적용하기  (0) 2015.11.22
CentOS 7 에 Jenkins CI 설치하기  (1) 2015.11.21

Jenkins와 SSH를 이용한 배포 연동

CI/Jenkins 2015. 12. 8. 11:40 by 후뤼한잉여

Jenkins와 SSH를 이용한 배포 연동

1. 개요

Jenkins를 통해 빌드를 해보았으니 이번엔 배포에 대한 부분을 알아보고자 설정한 내용을 정리한 문서입니다.

2. Jenkins 설정

  1. Jenkins 접속
  2. 왼쪽 메뉴 중 [Jenkins 관리] 메뉴 클릭
  3. [시스템 설정] 메뉴 클릭
  4. 중간의 ‘Publish over SSH’부분에서 ‘SSH Servers’에 [추가]버튼 클릭
  5. SSH로 접속할 대상 서버의 정보를 입력후 저장한다.

3. Jenkins Job 설정

  1. Job(프로젝트) 선택
  2. 왼쪽 메뉴 중 [구성] 메뉴 클릭
  3. 제일 하단 부분에 ‘빌드 후 조치’ 부분에 [빌드 후 조치 추가] 메뉴 클릭 후 [Send build artifacts over SSH]를 클릭
    • 만약 이 메뉴가 안보인다면 [Publish Over SSH] 플러그인을 설치
  4. SSH로 작업할 내역 입력

    • SSH Server Name : Jenkins 시스템 설정에서 등록한 SSH 서버 중 배포할 서버 선택
    • Souce files : 어떤 파일을 배포할 것인지 설정. **/*.jar는 모든 폴더의 jar로 끝나는 파일을 의미한다.

    • Remove prefix : 제거할 접두사를 의미하는데, 기본적으로 작업공간/빌드된 파일들로 되어있다. 예를들어 작업공간/A/B/C/test.jar가 있을때 C/test.jar로 배포하고 싶다면 여기에 A/B를 입력해준다.

    • Remote directory : Jenkins 시스템 설정에서 SSH 설정시 지정한 홈 디렉토리 뒤에 추가로 입력하는 디렉토리인데, 배포할 파일이 저장될 디렉토리를 지정한다. 이 때 없으면 새로 생성해주지 않기 때문에 미리 만들어 져 있어야 한다.
    • Exec command : 배포 후 실행 할 명령어를 입력하는 곳으로 리눅스 설정에 따라 특정 명령어를 사용하지 못하므로 설정을 잘 해주거나, 특정 명령어의 절대경로를 입력해주는 방식으로 해결을 해야 한다.

이제부터는 Gitlab을 통해 GitServer로 push를 하면 Webhook 설정에 의해 Jenkins CI에서 Gradle로 빌드를 하고, 지정한 서버로 SSH를 통해 배포가 가능해졌다.

Jenkins 와 Gradle을 이용한 Build 연동

CI/Jenkins 2015. 12. 8. 10:00 by 후뤼한잉여

Jenkins 와 Gradle을 이용한 Build 연동

1. 개요

Ant를 조금 사용해본 것 외에 의존 라이브러리까지 관리해주는 Maven을 사용해 본 적이 없었습니다.
그러던 중 Gradle이라는 Ant와 Maven의 장점을 녹여냈다는 Gradle이 요즘 뜨는 추세라고 하여 Maven을 건너뛰고 Gradle을 사용하기로 마음을 먹었습니다.
Gradle에 대해서도 간단한 사용법 정도로만 알고 있지만 우선 Jenkins와의 연동을 통해 Gitlab에 푸시된 소스를 빌드할 수 있을 정도로의 환경을 구축을 해본 내용을 정리한 글입니다.
참고로 사용된 OS는 CentOS 7 Minimal 버젼입니다.

2. Gradle 설치

Gradle을 통한 빌드를 사용하려면 Gradle을 설치해야합니다. Maven이나 Ant또한 마찬가지입니다.

  1. 의존 패키지 다운로드
    centos minimal 버젼에서는 unzip 패키지가 설치되어 있지 않기 때문에 추가로 설치하였습니다.
     sudo yum install unzip
    
  2. Gradle 바이너리 파일 다운로드
    작성일 기준 최신 버전인 2.9버젼을 다운로드 합니다.
     wget https://services.gradle.org/distributions/gradle-2.9-bin.zip
    
  3. 다운 받은 Gradle 압축파일 압축 해제
     unzip gradle-2.9-bin.zip
    
  4. 이름 변경
    사용 편의상 이름을 변경한 부분으로 안하셔도 됩니다.
     mv gradle-2.9-bin.zip gradle
    
  5. gradle 위치 이동
    관리하기 편한 곳으로 이동시키기 위해 한 작업으로 안하셔도 됩니다.
     sudo mv gradle /usr/lib
    

3. Jenkins 설정

  1. Jenkins 접속
  2. 왼쪽 메뉴 중 [Jenkins 관리] 메뉴 클릭
  3. [플러그인 관리] 메뉴 클릭
  4. [설치 가능] 탭에서 Gradle plugin 플러그인 설치

     

  5. Jenkins 재시작 후 Jenkins 재접속

  6. 왼쪽 메뉴 중 [Jenkins 관리] 메뉴 클릭
  7. [시스템 설정] 메뉴 클릭
  8. 중간에 Gradle 메뉴에서 [Gradle installations…] 버튼 클릭
  9. [Add Gradle] 버튼 클릭
  10. Jenkins에서 구분할 Gradle 이름과, Gradle이 설치된 디렉토리 입력
    • 저는 앞서 /usr/lib/gradle로 이동시켰기 때문에 /usr/lib/gradle이 gradle 홈 디렉토리가 되었습니다.

4. Jenkins Job 설정

여기에서는 기존 가지고 있는 Job의 내용을 변경을 하지만, 신규 등록 할 때는 신규 등록시 설정하는 화면에서 진행하면 됩니다.
신규 등록하는 방법은 GitLab 과 Jenkins CI 연동하기를 참고하셔서 등록하시면서 추가적인 부분만 이 글을 보시면 됩니다.

  1. Jenkins 접속
  2. 변경할 Job(Project)를 선택
  3. 왼쪽 메뉴 중 [구성] 메뉴 클릭
  4. 중간에 Build 부분에 [Add build step]을 클릭하면 나오는 메뉴중 [Invoke Gradle script] 선택
  5. 설치되어있는 Gradle 중 사용할 Gradle을 선택하고, 작업할 Tasks를 입력 및 Build시 사용할 Build File의 이름을 입력해준 후 [저장] 해주면 됩니다.

 

이 후에는 설정에 따라 Git push를 통해 빌드가 잘 되는지 확인등을 해보시면 됩니다.
위에 Build 설정한 내용은 지극히 간단한 내용만 등록하였습니다.
추가적인 부분은 Gradle과 Jenkins를 어떻게 쓰냐에 따라 달라집니다.

Jenkins HTTPS 적용하기

CI/Jenkins 2015. 11. 22. 00:41 by 후뤼한잉여

Jenkins HTTPS 적용하기

1) 개요

다른 서버들 처럼 HTTPS를 적용하기 위해 설정한 내용을 정리한 문서입니다.

2) HTTPS 적용하기

  1. 인증서 생성 하기

    GitLab에 HTTPS 보안 적용을 위한 OpenSSL 설정하기 문서에 2) 인증서 생성하기 부분을 참고하여 키 생성 진행

  2. 편한 곳에 SSL 관리할 디렉토리 생성

     sudo mkdir -p /usr/lib/jenkins/ssl
    
  3. 인증서 파일 이동하기
     sudo mv * /usr/lib/jenkins/ssl
    
  4. jnekins 설정 파일 수정하기

     sudo vi /etc/sysconfig/jenkins
    
     JENKINS_PORT="9090" => JENKINS_PORT="-1" //http 사용 안하겠다는 의미.
     JENKINS_HTTPS_PORT="" => JENKINS_HTTPS_PORT="9090" //https 포트를 9090으로 하겠다.
    
     맨 마지막줄에 키 관련 정보 추가
     JENKINS_ARGS="" => JENKINS_ARGS=" --httpsCertificate=[인증서경로]/[인증서명].crt 
                                         --httpsPrivateKey=[인증서경로]/[인증서명].key"
    

CentOS 7 에 Jenkins CI 설치하기

CI/Jenkins 2015. 11. 21. 21:03 by 후뤼한잉여

CentOS 7 에 Jenkins CI 설치하기

1) 개요

CI(Continous Intergration, 지속적 통합)은 애자일 개발 방법 중 하나로 여러 개발자가 작업한 것을 통합하는 일을 미루지 말고 개발 중에라도 실시하여 소프트웨워의 복잡성을 제거하자는 생각에 대한 방식이다.
이러한 CI를 지원하는 도구 중 하나로 유명한 Jenkins를 사용해보고자 설치한 내용을 정리하기 위해 작성되었습니다.
아직 잉여라 실제로 사용해본 적도 없고 배워야할게 많아 실질적으로 사용은 못 해보고 있지만 언젠간 사용해볼 날을 기대하며 문서를 남겨 봅니다.
이 문서에서는 톰캣 등에 올려서 사용하지 않고 Jenkins 자체 서버를 이용한 방법으로 설명 되어있습니다.

2) 설치하기

  1. Jenkins 실행을 위한 JDK 설치
    • Oracle JDK를 설치하여 설치해보려 했으나 내공 부족으로 실패하여 공식적으로 하라는 대로 그냥 Open JDK를 설치하여 진행하기로 하였습니다.
      sudo yum install java-1.7.0-openjdk
      
  2. Jenkins 설치를 위한 yum레파지토리 설정
     sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
     sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
    
  3. Jenkins 설치
     sudo yum install jenkins
    
  4. Jenkins에 사용할 포트 설정

     sudo vi /etc/sysconfig/jenkins
    
     //JENKINS_PORT와 JENKINS_AJP_PORT를 변경
     JENKINS_PORT="9090" 
     JENKINS_AJP_PORT="9091"
    
  5. Jenkins 사용을 위한 방화벽 설정
     sudo firewall-cmd --permanent --zone=public --add-port=9090/tcp
     sudo firewall-cmd --reload
    
  • Jenkins 서비스 명령어
    • Jenkins 시작
      sudo service jenkins start
      
    • Jenkins 종료
      sudo service jenkins stop
      
    • Jenkins 재시작
      sudo service jenkins restart
      

3) 기본 설정하기

  1. Jenkins 서버 접속

  2. 왼쪽 메뉴 중 [Jenkins 관리] 메뉴 클릭


  3. [Configure Global Security] 메뉴 클릭


  4. 설정 하기

    • Enable security 체크박스 클릭
    • 사용자의 가입 허용 체크 박스 클릭
    • Matrix-based security 라디오 버튼 클릭

    • User/group to add에 관리자로 사용할 계정을 입력 후 [Add]버튼을 클릭하여 추가 한다.

    • 생성 된 계정 옆에 체크박스들에 체크를 다 하여 권한을 부여한다.
    • [Save] 버튼을 클릭하여 계정 설정을 저장한다.
  5. [계정 생성] 메뉴를 클릭하여 관리자 계정으로 가입을 진행한다.

    • 이 부분을 꼭 진행해야 나중에 문제가 안된다고 한다.

        


Nav