Jenkins 在管道期间处理日志失败

问题描述 投票:0回答:1

在 cmd 与 Jenkins 管道中运行 C# 脚本会给出不同的结果。

我正在运行 Jenkins 管道,在后期步骤中,我想从服务器获取管道日志,将其拆分为不同的文件(每个阶段一个)并将其上传到某个共享驱动器。这一切都是通过 C# 脚本完成的,下面是给出错误的代码片段:

if (File.Exists(logPath))
 {
     // copies the log file to current directory to avoid "file in use" error
     string destPath = Directory.GetCurrentDirectory() + "/log.txt";
     File.Copy(logPath, destPath, true);
     m_priv_logPath = destPath;
 }
 else
 {
     throw new Exception("File \"" + logPath + "\" does not exist");
 }

从命令行使用完全相同的参数运行相同的脚本可以正常运行,但在 Jenkins 中它会进入 else 块,因为 File.Exists 返回 false。 日志路径始终是网络路径,因此类似于

\\<machine-name>\<job-name>\jobs\builds\<build-number>\log
我不确定如何调试此问题或可能导致此问题的原因。有什么想法吗?

c# jenkins continuous-integration devops pipeline
1个回答
0
投票

您的 Jenkins 实例可能在与您不同的用户下运行。该用户可能没有相同的权限来访问相关网络路径。将此命令添加到您的管道中以查看 Jenkins 是否可以访问该文件:

bat '\\\\<machine-name>\\<job-name>\\jobs\\builds\\<build-number>\\log'

注意,我加倍了

\
,因为 Groovy。

© www.soinside.com 2019 - 2024. All rights reserved.