在LInux机器中删除工作区后Maven执行

时间:2015-11-07 10:58:07

标签: linux maven jenkins jenkins-plugins

我们的框架工作是以整个项目(从Perforce)复制到Linux机器(远程VM机器)的方式开发的,并且执行Maven命令来运行测试用例。一切都是通过詹金斯推动的。

执行测试用例后,我使用执行shell 后Maven构建步骤删除工作区。正如所料,它正在删除工作区。删除工作区后我的问题:不知道为什么它再次解析POM?尽管测试用例成功执行,但这会导致作业失败。

这是我配置删除工作区的方式:

enter image description here

在运行作业时,它正在按预期删除工作区,但解析POM删除后的内容。显然POM不会在那里删除工作区。

INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:11:26.091s
[INFO] Finished at: Mon Nov 02 22:50:42 PST 2015
[INFO] Final Memory: 133M/489M
[INFO] ------------------------------------------------------------------------
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
Waiting for Jenkins to finish collecting data
channel stopped
[testjob] $ /bin/sh -xe /tmp/hudson464395510348605766.sh
+ echo testjob
testjob
+ delworkspace=/opt/hudson/workspace/testjob
+ rm -rf /opt/hudson/workspace/testjob
ERROR: Failed to parse POMs
java.io.IOException: java.io.FileNotFoundException: /opt/hudson/workspace/testjob/pom.xml (No such file or directory)
    at hudson.remoting.FastPipedInputStream.read(FastPipedInputStream.java:169)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Notifying upstream projects of job completion
Finished: FAILURE 

我是否错过配置中的任何内容?我做了所有的功课,但没有运气。

2 个答案:

答案 0 :(得分:1)

您可以轻松地使用Parameterized Trigger Plugin

  • 你应该做什么:创建一个新工作(比如名为cleanWS),当构建完成时,它将触发cleanWS&立即删除你的工作空间。

  • 转到testjob configure - >从Execute shell部分选择Build - >复制并粘贴echo delworkspace=/opt/hudson/workspace/$JOB_NAME >> file.properties

  • Post-build Actions部分:

      Add post-build action -> Trigger parameterized build on the projects
      Projects to build -> <job name e.g. cleanWS>  
      Trigger when build is -> Complete (always trigger)
      Add Parameters -> Parameters from properties file
        Use properties from file -> file.properties
    
  • save

  • 然后转到cleanWS配置 - &gt;从Execute shell部分选择Build - &gt;复制并粘贴rm -rf $delworkspace

N.B。使用此cleanWS作业,您可以删除所有作业的工作区。

答案 1 :(得分:0)

我会使用Workspace Cleanup Plugin

  

此插件在构建之前或构建完成并保存工件时删除工作区。

而不是通过自己的脚本删除工作区。