【问题标题】:PowerShell script called from within the Jenkins PowerShell build step hangs indefinitely从 Jenkins PowerShell 构建步骤中调用的 PowerShell 脚本无限期挂起
【发布时间】:2012-12-19 10:20:53
【问题描述】:

我有一个 Jenkins (1.493) 项目,它使用 Jenkins PowerShell 构建步骤来执行 PowerShell 脚本。在该脚本中,我想调用另一个存储在文件中的脚本。我现在将其简化为以下内容:

Jenkins PowerShell 构建步骤中的脚本:
& "\\stemmer.local\sidevelopment\cvdev\devbase\jenkins\PowerShell\Test.ps1"

Test.ps1的内容:
write-host 'Hello world!'

每当执行此 Jenkins 项目时,PowerShell 构建步骤都会无限期挂起。

到目前为止我已经尝试/验证过的事情:

  • 在调用 Test.ps1 之前添加一些输出显示 Jenkins PowerShell 脚本正在正常执行,直到调用 Test.ps1 为止。
  • 文件Test.ps1 存在并且可以从执行脚本的构建从站访问。如果我更改文件名,我会从 PowerShell 收到预期的错误消息...
  • 在第一个脚本中交换 " for ' 不会改变任何东西。此外,使用点源而不是 & 也无济于事。
  • 文件 Test.ps1 可以使用 Jenkins PowerShell 脚本中使用的相同命令行从 powershell 本身正确执行。
  • 在我的开发主机和 Jenkins 构建从站上,PowerShell 的执行策略已设置为 unrestricted
  • 我尝试将 PowerShell 构建步骤替换为如下所示的 Windows 批处理命令构建步骤:
    powershell.exe -InputFormat None -File "\\stemmer.local\sidevelopment\cvdev\devbase\jenkins\PowerShell\Test.ps1"
    并使用 powershell.exe 的参数进行了一些操作,但结果是- 据我所知,在那些语法和其他方面正确的情况下 - 总是一样的。

我只发现很少提到听起来相似的问题,但其他地方提到的方法都没有帮助我解决这个问题。我非常困惑,想知道以前是否有人遇到过这个问题(甚至可能遇到过我想运行的场景)。

非常感谢您的任何意见!

Volker

【问题讨论】:

    标签: powershell jenkins freeze


    【解决方案1】:

    您是否尝试将执行策略设置为绕过?

    在本地复制脚本文件,然后从 Jenkins PowerShell 插件中调用它 - 这样它就可以按预期工作。

    【讨论】:

    • 我做到了(诚然,只是在你提到它之后),但它不会改变行为。不过,感谢您的快速回复!
    • 我从来没有使用过 jenkins,所以除了基础知识之外无法为您提供更多帮助:您是否尝试将脚本移动到本地计算机,是否有任何日志文件等。
    • 非常感谢!在本地复制脚本实际上可以解决问题 - 如果我例如在我的脚本中执行& "C:\Test.ps1"(并且文件在那里)它运行正常,所以问题仅在于从网络共享运行的脚本。来自 Jenkins 的日志文件没有产生任何结果(基本上 Jenkins 捕获了调用脚本的输出,但似乎没有任何东西开始 - 因此没有日志......)。在构建机器上,詹金斯作为服务运行 - 这也可能导致问题......
    • 验证运行jenkins的账号,可能网络共享不允许
    • 我认为您的最后一个问题实际上让我非常接近解决方案:我可以在执行脚本之前将它们复制到本地文件夹,这样我就可以实现我最初的计划。我会尝试几次,然后可能会将您的回复标记为答案。非常感谢 Kayasax!
    猜你喜欢
    • 2012-09-24
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 2011-05-07
    • 2017-04-16
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多