2010. 6. 30. 16:40 IT

 

목적 : 유휴 장비를 추가로 빌드서버로 사용하고 master node에서 통합하여 관리

 

방법 : 유휴 장비를 선정하여 slave를 설치한다.

준비사항 : jdk 1.4 이상, ant 1.7 이상, 접속 가능한 hudson master node

절차

  1. slave 선정
    당연히 놀거나, 빌드서버의 노고를 덜어줄수 있는 장비면 된다. OS 무관.
    대신 jnlp agent 접근을 위해 ssl 이나 특정 tcp 포트에 접속이 가능해야 한다.
    (여기서는 jnlp slave agent 를 위한 tcp port 오픈으로 작업했다.)
  2. hudson server에서 slave.jar  카피
    참고자료에서는 가능한 버전을 동일하게 가기 위해서 wget 같은 방법을 사용하여 복제하는 것을 권고 하고 있다.
    현재 hudson의 slave.jar 를 내려받는 방법은
    $HUDSON_MASTER/jnlpJars/slave.jar
    ex) http://myhudsonserver:80/jnlpJars/slave.jar
  3. hudson master jnlp tcp port setting
    hudson master server의 hudson 관리 > Configure System > TCP port for JNLP slave agents 값을 Random 또는 Fixed 로. (특정 포트만 오픈하는 경우에는 Fixed)
  4. hudson master node에서  new node 추가
    hudson master server에서 hudson 관리 > Manage Nodes > New Node >
    Node Name : 원하는 노드명. 참고자료에서는 slave hostname을 추천. 해보니 괄호 같은건 인식안됨
    Remote FS root : slave의 작업 root 절대패스
    Labels : slave들을 논리적으로 grouping 짓기 위한 명칭
    나머지는 default 값.
  5. slave.jar 실행
    실행명령은 다음과 같다.
    java -jar slave.jar -jnlpUrl http://myhudsonserver:80/computer/허드슨슬레이브노드이름/slave-agent.jnlp
  6. 빌드JOB 설정을 slave node에서 실행되도록 변경
    JOB의 Configurer 화면으로 이동하여
    Tie this project to a node 를 체크하면 노드 또는 Label을 선택할수 있게 된다.
    이때 주의할 것은 서버에 종속되는 정보를 빌드스크립트에 전달할 목적으로
    Build > Invoke Ant 의 Targets 항목에 -propertyfile /a/b/c.properties 등을 추가해두었다면
    반드시 slave 서버의 로컬경로 내에 해당 파일이 존재해야 한다는 것.
    추가 : 특정 서버에 종속되야 할 경우 Tie를 반드시 시켜둘것 (아니면 hudson이 지맘대로 서버를 돌려버린다.  장점이자 주의사항이다. )
  7. 기타...
    ant 확장 library (ftp, svn 등)가 slave에도 배포되었는지 확인할 것
  8. 회고
    좋은점 :
    웹배포 job들을 분리하여 좀더 깔끔해졌고, 배포형상이 틀어지는 것을 피할 수 있었다. (기존엔 웹리소스만 업데이트 하고 싶은데, 소스나 서버 프로그램들이 업데이트 되는 문제가 있었다.)
    기존 빌드시간을 단축할 수 있게 되었다 (웹 배포만 1분넘게 걸린다.)
    제한된 자원을 보다 효율적으로 사용할 수 있게 되었다.
    아쉬운점 :
    처음에 분산빌드를 준비하기 위한 좋은 가이드를 찾지 못해 작업중간에 시간을 낭비했다. (slave.jar 는 실행했는데,, 그담에 뭘해야 하지?? ) 다음엔 좋은 가이드를 먼저 찾는데 좀더 시간을 투자하자.
    점점 빌드서버 구조가 복잡해지고 있는데, 정리를 못하고 있다.
    계속할것 :
    통상 PJT가 파일서버, 형상서버 두대 정도는 가지고 있으니, 가용장비를 적절하게 활용할 수 있도록 구성을 해주는 것도 좋을듯 싶음.

 

 

 

참고자료 : http://www2.java.net/blog/johnsmart/archive/2010/06/02/starting-hudson-slave-unix-machine-without-ssh

 

이 글은 스프링노트에서 작성되었습니다.

posted by smplnote