2012-12-14 3 views
0

Jenkins에서 maven antrun 플러그인을 사용하여 Tomcat을 시작하려고합니다. 나는 같은 것을 위해 뱃짐을 사용할 수있다라는 것을 알고있다. 그러나 나는 그것을 사용할 수 없다. 이유는 빌드가 끝난 후 응용 프로그램이 실행되는 Tomcat을 실행하고 싶기 때문입니다.Jenkins가 maven-antrun을 통해 Catalina.bat를 실행하지 않습니다.

다음은 시나리오입니다. - 프로젝트 1을 체크 아웃하는 작업 1 -> 빌드 -> Tomcat에 배포합니다. 다른 작업은 Job 2가 다른 프로젝트를 체크 아웃합니다 -> ESB에서 빌드하고 배포 한 다음 Job 1에 배포 된 Tomcat을 사용하여 통합 테스트를 실행합니다. 작업 1에서 Tomcat을 한 번만 중지해야합니다. 깨끗한 단계에서 - 컴파일 단계 후 maven antrun을 사용하여 시작할 계획입니다. 그런 다음 패키지 단계 후에화물을 다시 사용하여 새로운 전쟁을 재배치하십시오. Tomcat이 모든 테스트 빌드에 대해 새로 고쳐지고 Permgen 등을 겪지 않도록하려면이 작업을 수행해야합니다.

문제는 다음 스크립트가 내 명령 프롬프트에서 올바르게 실행됩니다. 즉, Tomcat을 올바르게 시작하고 명령 창을 엽니 다. Startup.bat에 대한. 그러나 젠킨스에서 같은 것을 시도해도 불만을 품지 않고 재미있게 익숙해지고 있습니다. 단순한 것은 바람둥이를 시작하지 않습니다. 뿐만 아니라 실행 = "cmd.exe를"

<plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-antrun-plugin</artifactId> 
         <version>1.7</version> 
         <executions> 
          <execution> 
           <id>startTomcat</id> 
           <phase>compile</phase> 
           <configuration> 

            <target> 

             <exec executable="C:\Windows\System32\cmd.exe" spawn="true"> 
              <arg value="/c" /> 
              <arg value="D:\apache-tomcat-6.0.36\bin\startup.bat" /> 
             </exec> 
            </target> 
           </configuration> 
           <goals> 
            <goal>run</goal> 
           </goals> 
          </execution> 
         </executions> 
        </plugin> 

내가 모두 실행 = "\ WINDOWS \ SYSTEM32 \ cmd.exe를 C"를 시도

[INFO] Executing tasks 
Build sequence for target(s) `main' is [main] 
Complete build sequence is [main, ] 

main: 
    [exec] Current OS is Windows 7 
    [exec] Executing 'C:\Windows\System32\cmd.exe' with arguments: 
    [exec] '/c' 
    [exec] 'D:\apache-tomcat-6.0.36\bin\startup.bat' 
    [exec] 
    [exec] The ' characters around the executable and arguments are 
    [exec] not part of the command. 
Execute:Java13CommandLauncher: Executing 'C:\Windows\System32\cmd.exe' with arguments: 
'/c' 
'D:\apache-tomcat-6.0.36\bin\startup.bat' 

The ' characters around the executable and arguments are 
not part of the command. 
spawned process [email protected] 
[INFO] Executed tasks 
mojoSucceeded org.apache.maven.plugins:maven-antrun-plugin:1.7(startTomcat) 

젠킨스에서 볼 로그입니다 - 같은 문제가 즉 명령 프롬프트에서 실행하면 잘 작동하지만 젠킨스에서는 바람둥이가 시작되지 않고 오류도 발생하지 않습니다.

은 Jenkins - System Configuration을 확인하고 user.name은 NEW-LT7-0064 $입니다. 그것이 어떤 식 으로든 도움이되는지 확실하지 않지만 명령 프롬프트에서 실행하면 사용자는 내 Windows에 로그인 한 것입니다. 또한 Jenkins를 로컬 시스템 계정으로 Windows 서비스로 실행하고 있습니다.

나는 시도뿐만 아니라 윈도우 64 비트 Windows 7 시스템

Another workaraund for Windows XP and later is to shedule permanent task and force running it from the ant script. 
Once run the command: 

C:\>SCHTASKS /Create /RU SYSTEM /SC ONSTART /TN Tomcat /TR "C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin\startup.bat" 
Note, that ONSTART can be replaced with ONCE if you do not want to keep Tomcat running. 
Add the following code to your ant script: 

<exec executable="SCHTASKS"> 
    <arg value="/Run"/> 
    <arg value="/TN"/> 
    <arg value="Tomcat"/> 
</exec> 

답변

0

당신이 바람둥이가 전혀 시작되지 않습니다 확신에 하나를 작동하지 않았다 링크 https://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build에 제안 다음? IIRC Jenkins는 긴 수명의 빌드 프로세스를 생성하는 것을 지원하지 않습니다 (here 참조).

톰캣에 대해서는 second comment이 도움이 될 수 있습니다. 즉, 톰 스크립트를 쉘 스크립트가 아닌 서비스로 시작하는 것입니다.

+0

하이 탕. 예, 바람둥이가 시작되지 않는지 확인했습니다. Tomcat 시작 로그를 확인했는데 아무 것도 일어나지 않습니다. 확인 서비스로 바람둥이를 제어 할 수 있는지 확인합니다. 그러나 위의 질문은 여전히 ​​남아 있습니다. 젠킨스가 명령 프롬프트 메이븐 빌드에서 정상적으로 실행되는 메이븐 빌드의 일부로 박쥐 파일을 실행할 수없는 이유는 무엇입니까? user.name의 권한/경로와 관련이 있습니다. 내 의혹입니다. 이견있는 사람? – Soumya

+0

참고하시기 바랍니다. https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller(위에서 게시 한 링크에서 찾을 수 있음) 옵션을 시도했습니다. 어떤 사람들에게는 효과가 있었지만 나에게는 효과가 없었던 것 같습니다 .-( – Soumya