Jenkins在从节点中构建日志

wdebmtf2  于 12个月前  发布在  Jenkins
关注(0)|答案(1)|浏览(171)

我正在尝试将我们的jenkins构建日志推送到S3。我在构建阶段使用了Groovy插件和以下脚本

// This script should be run in a system groovy script build step.

// The FilePath class understands what node a path is on, not just the path.
import hudson.FilePath

// Get path to console log file on master.
logFile = build.getLogFile()

// Turn this into a FilePath object.
logFilePathOnMaster = new FilePath(logFile)

logFileName = build.envVars["JOB_BASE_NAME"] + build.envVars["RT_RELEASE_STAGING_VERSION"]  + '.txt'

// Create remote file path obj to build agent.
remoteLogFile = new FilePath(build.workspace, logFileName)

// Copy contents of master's console log to file on build agent.
remoteLogFile.copyFrom(logFilePathOnMaster)

字符串
然后我使用S3插件推.txt文件到S3。
但是这个脚本从主节点获取构建日志文件。构建日志是如何从从节点传输到主节点的?我可以在没有主节点参与的情况下访问从节点上的构建日志文件吗?
从节点一定是在某个地方构建时保留了构建日志?我似乎找不到它。

yfwxisqw

yfwxisqw1#

我不太熟悉Groovy,但这里是我使用shell脚本工作的解决方案。我使用Jenkins 'Node and Label parameter plugin'在从节点上运行我们的java进程。作业是使用'Build >> Execute Shell'选项触发的。日志被收集到一个文件中,如下所示:

sudo java  -jar xxx.jar | sudo tee -a ${JOB_NAME}/${BUILD_NUMBER}.log 2>&1

字符串
然后将此日志文件推送到S3:

sudo aws --region ap-south-1  s3  cp ${JOB_NAME}/${BUILD_NUMBER}.log  s3://bucket/JenkinsLogs/${JOB_NAME}/${BUILD_NUMBER}.log


它对我们很有效。希望它也能帮助你。

相关问题