페이지 트리

이 문서는 Tomcat으로 운영중인 앱을 Bamboo에서 자동으로 배포하는 방법을 정리한다.

Tomcat 설정

Bamboo에서 자동 배포 가능하도록 권한 설정

  1. 사용자 및 권한 설정
    배포용 사용자 추가 및 권한 설정

    conf/tomcat-users.xml
    ...
      <user username="bamboo" password="password" roles="manager-gui,manager-script"/>
    ...

     manager-gui: 웹을 통해 앱 관리를 할 경우 추가

  2. 접속 가능한 서버 등록
    기본적으로 Tomcat은 동일한 서버로부터의 접속만 허용하므로 배포가 이루어질 배포할 Bamboo 서버의 IP 등록이 필요하다.

    webapps/manager/META-INF/context.xml
    <Context antiResourceLocking="false" privileged="true" >
      
      <Valve className="org.apache.catalina.valves.RemoteAddrValve"
             allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|<배포할 Bamboo 서버의 IP>|<GUI 화면을 접소할 PC의 IP>" />
      
      <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
    </Context>
  3. Tomcat 서버 재기동
    설정은 Tomcat 재기동 후 반영된다.

    bin/shutdown.sh
    bin/startup.sh

참고사항

server.xml의 파일에서 war배포에 대한 옵션 설정. war파일이 서버에 생성되지 않는 부분과는 상관없음.

conf/server.xml
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
  1. autoDeploy 옵션(디폴트 true)
    기본적으로 톰캣은 autoDeploy 옵션이 true일 경우 WAR파일을  appBase(=webapps) 디렉토리에 위치시키면 톰캣 구동시 WAR파일을 자동으로 읽어서 배포(deploy)합니다.  
  2. unPackWARs 옵션(디폴트 true)
    unPackWARs 옵션이 true로 되어 있을 경우에는 WAR 파일의 압축을 풀어서 배치하게 됩니다. war파일은 서버에 배포되지만 압축을 풀지 않음


Bamboo 설정

  1. Deploy Tomcat Application 테스크 추가
    Add task > Deploy Tomcat Application
  2. 항목 설정
    1. Tomcat Manager URL

      설정 항목설정값
      Tomcat Manager URL
      1. http(s)://<tomcat 서버 주소>:<port>/mansger/
        예) https://10.0.1.120:8080/manager/
      Tomcat Manager Username
      1. tomcat-users.xml 파일에 설정한 manager-script role 을 가진 사용자 이름
        예) bamboo
      Tomcat Manager Passwordtomcat-users.xml 파일에 설정한 Manager user의 암호
      Application Context배포할 application의 context 설정
      version for Parallel Deployment

      하나의 앱에 여러 버전을 배포하는 경우 설정할 수 있으며, Bamboo build number등의 변수를 사용하면 편리하다.

      예) $bamboo_buildNumber

      WAR File배포할 war 파일 이름
      Deployment Tag

      undeploy 후 재 배포할 경우 사용할 tag 이름 (tag를 이용해야만 undeploy 가능)

      예) 예) $bamboo_buildNumber

      재배포 명령 예) http://localhost:8080/manager/text/deploy?path=/footoo&tag=footag
  • 레이블 없음