【问题标题】:Broken Shell with Conditional Step Plugin - Jenkins带有条件步骤插件的破壳 - Jenkins
【发布时间】:2017-09-05 19:40:48
【问题描述】:

我使用 Jenkins 中的条件步骤插件在文件存在时发送邮件。 我尝试了以下方法:

使用这个命令:mpack -s "Test Mail" /file.csv myemail@something.com

但我从 Jenkins 得到以下控制台输出:

[File exists] check if file exists [file.csv]
Run condition [File exists] preventing perform for step [Execute shell]
Finished: SUCCESS

我没有收到任何电子邮件... 即使写:echo "HELLO",也不会发生任何事情。 问题在于条件“文件存在”,因为我尝试处理“始终”条件,并且它有效。

“文件存在”这种情况会发生什么?

非常感谢!!!

【问题讨论】:

  • 您的.csv 文件保存在哪里?
  • 在我的工作区中名为“/test-output /”的文件夹中。
  • 我尝试输入:mpack -s "Test Mail from Jenkins" **/file.csv myemail@something.com。但它也不起作用。
  • 你试过提供绝对路径吗?
  • 是的,绝对路径和相对路径,什么都没有发生……

标签: shell jenkins


【解决方案1】:

您已在文件字段中提供了您的.csv 文件名,并选择了您的基本目录为Workspace。由于Files Match 条件只接受一个文件名并直接在工作区而不是在工作区的子文件夹中检查它,因此无法找到它,因此该过程在那里终止。

我建议你使用Files match 而不是File exists

File exists 仅查找直接存在于您的工作工作区中的单个文件,您不能为您的文件提供任何绝对路径或 Ant GLOB 格式路径。

但是,如果您使用 Files match,您可以查找多个文件并使用 Ant GLOB 格式提供您工作区中文件的路径。

在您的情况下,您必须选择Files Match 作为Run? 条件并提供文件的路径,即**/your_file.csv

【讨论】:

  • 完美的 ANIL,非常感谢。有用!!!!文件匹配条件:匹配 [1] 个文件运行条件 [文件匹配] 为步骤 [执行 shell] [workspace] 启用执行 $ /bin/sh -xe /tmp/jenkins1433298668224524769.sh + echo HELLO HELLO Finished: SUCCESS
  • 现在我想在文件匹配时发送邮件,但我尝试过:
  • mailx -s 'Test Mail from Jenkins' -a **/my_file.csv my@email.com 但它返回失败“mailx: not found”
  • sendmail -f sender@some.where -t receiver@some.place -m -a file1.csv 并返回“sendmail: not found”
  • mpack -s "Subject here" file.csv user@example.com 并返回 "mpack: not found"