【问题标题】:Jenkins: How to check server directory exist in Nexus with powershell?Jenkins:如何使用 powershell 检查 Nexus 中是否存在服务器目录?
【发布时间】:2019-05-14 07:33:17
【问题描述】:

我们使用 Jenkins。 我想将目录+文件从 Windows 服务器上的目录上传到带有 powershell 的 Nexus。

但在执行此操作之前,我想检查此目录是否已存在于 Nexus 中。

使用 wget,我可以将目录和文件从 Nexus 下载到我的 Jenkins 工作区中。

但我只想通过 url ("http://xxxxx/yyyyy/zzzzz/") 检查目录/文件是否存在于服务器上的 Nexus 中。

我尝试过: - 测试路径 - 路径, - Get-SpWeb(无法识别), - 调用请求, - HTTPRequest =[System.Net.WebRequest]::Create('url')。

我已经尝试了很多,但如果目录存在,则调用请求并且 HTTPRequest 正在工作。但如果它不存在,我会收到 404 错误 ($HTTP_Response = $HTTP_Request.GetResponse()) 或者它挂起......

我正在寻找 powershell (Jenkins) 的示例/教程,它正在检查服务器上 Nexus 中的目录/文件“http://xxxxx/yyyyy/zzzzz/”是否存在。

【问题讨论】:

    标签: powershell jenkins


    【解决方案1】:

    你可以这样做:

    $status = (Invoke-WebRequest -Uri http://xxxxx/yyyyy/zzzzz/).StatusCode
    if ($status -eq 200) {
       #do stuff when url exists
    }
    

    【讨论】:

    • 这个我试过了。如果 url 存在没有问题,不到一秒钟的代码就会被执行。但是,如果 uri 不存在,则它会“挂起”。我不知道发生了什么,但在 3 或 5 分钟之后。我中止了 Jenkins 的工作
    • 您的浏览器中可能会有相同的行为。如果您在浏览器中编写一个不存在的路径,它会如何响应?问题可能出在服务器上,而不是在脚本中
    【解决方案2】:

    “仅”这对我和 Jenkins 有效,我现在不知道为什么 -Mehthod HEAD 是必要的以及它的作用,但至少它在 Jenkins 中有效:

    try {
        $Response = Invoke-WebRequest -Method HEAD -Uri $url
        $status = $_.Exception.Response.StatusCode.Value__
    
    } catch {
        $status = $_.Exception.Response.StatusCode.Value__
    } # END try {...} catch {...} 
    
    if (($status -eq 200) -Or ([string]::IsNullOrWhiteSpace($status))) {...}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      相关资源
      最近更新 更多