Java 詹金斯:即使命令失败,如何将命令输出打印到文件?

Java 詹金斯:即使命令失败,如何将命令输出打印到文件?,java,ios,xcode,bash,jenkins,Java,Ios,Xcode,Bash,Jenkins,据我所知,Jenkins日志记录似乎是在JVM中完成的,在JVM中它使用Java的log util类。这是一个问题,因为运行的其中一个命令记录了将近90MB的内存。从技术上讲,我可以增加JVM的大小,但我无法让它工作,我更愿意将这个长日志写入文件 假设我有一个类似于xcodebuild的命令,这将生成90MB的日志记录。我在我的jenkins构建脚本中执行了以下操作: xcodebuild abc>my_output.txt 但是,如果构建失败,则似乎my_output.txt实际上并不存在。这

据我所知,Jenkins日志记录似乎是在JVM中完成的,在JVM中它使用Java的log util类。这是一个问题,因为运行的其中一个命令记录了将近90MB的内存。从技术上讲,我可以增加JVM的大小,但我无法让它工作,我更愿意将这个长日志写入文件

假设我有一个类似于
xcodebuild
的命令,这将生成90MB的日志记录。我在我的jenkins构建脚本中执行了以下操作:

xcodebuild abc>my_output.txt

但是,如果构建失败,则似乎my_output.txt实际上并不存在。这与常规bash的工作方式相反。嗯

是否有任何巧妙的解决方法,以便即使命令失败(并记录了一些内容),仍然可以创建文件

如果jenkins任务失败,我只希望能够将日志文件的最后20行发送给我自己。但是由于没有创建文件,日志将永远消失

我建议使用(xcodebuild的包装器),它提供了指定报告器的选项

# Test the application on iPhone Simulator
xctool  -workspace MyProject.xcworkspace \
        -scheme "MyProject" \
        -reporter plain:tmpoutputs/log.txt \
        -reporter junit:tmpoutputs/junit.xml \
        clean test \
        -test-sdk iphonesimulator8.3 \
        -freshInstall
这将输出一个日志文件到“tmp outputs/log.txt”,如果要运行测试,还可以选择一个junit日志文件作为测试输出

在Jenkins的shell执行步骤中放入类似的代码,就可以开始了