构建步骤“Windows PowerShell”将构建标记为失败,为什么?

2024-01-04

以下是 Jenkins 中运行的三个 PowerShell 命令以及构建结果。为什么会失败?哪个命令可能会失败?我读过这篇文章:执行 Shell 如何/何时在 Jenkins 中将构建标记为失败? https://stackoverflow.com/questions/22814559/how-when-does-execute-shell-mark-a-build-as-failure-in-jenkins,但无法弄清楚。我对MS的东西不太熟悉。

命令1:

& "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.com" "$env:WORKSPACE\ETL\OnePnL.sln" /Build

命令2:

###########################
# Deploy SSIS package           #
###########################  
$csource ="$env:WORKSPACE\ETL\Project Type 0\bin\DEFAULT\OnePnL.ispac"
$cserver = "SSASDBDEV01"
$cdest = "/SSISDB/OnePnL/OnePnL"    
echo $env:GIT_BRANCH    
if ($env:GIT_BRANCH  -like '*master*')
{
   # Call IS Deployment Wizard
   echo "Deploying SSIS package to $cdest on $cserver"    
   # "C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\ISDeploymentWizard.exe" "/Silent /SourcePath:""$csource""    #/DestinationPath:""$cdest"" /DestinationServer:""$cserver""" -Wait
   Start-Process "C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\ISDeploymentWizard.exe" "/Silent /SourcePath:""$csource""    /DestinationPath:""$cdest"" /DestinationServer:""$cserver""" -Wait
}

命令3:

#####################
# Copy Files to O: drive #
#####################

#Make build directory

#$outputparentdir = "\\orion\Shared\AppUpload\ApplicationPackage\OnePnL Cube\SSIS Jenkins Builds"
$outputparentdir = "\\inv\Shared\Transfer - Deleted Weekly\Jenkins\BI\OnePnL\SSIS Jenkins builds"
$outputdir = "$outputparentdir\${env:GIT_BRANCH}\Build ${env:BUILD_NUMBER}"
echo "Branch"
echo ${env:GIT_BRANCH}

echo "Output directory"
echo $outputdir 

if (!(Test-Path "$outputparentdir"))
{
  mkdir $outputparentdir
}

mkdir $outputdir

ROBOCOPY "$env:WORKSPACE\ETL\Project Type 0\bin\DEFAULT" "$outputdir" /E /v

echo "Done Copy"

构建结果:

[OnePnL SSIS] $ powershell.exe -NonInteractive -ExecutionPolicy ByPass "& 'C:\Users\SVC_TE~1\AppData\Local\Temp\hudson3790190217372968147.ps1'"

Microsoft (R) Microsoft Visual Studio 2012 Version 11.0.50727.1.
Copyright (C) Microsoft Corp. All rights reserved.
------ Build started: Project: OnePnL, Configuration: DEFAULT ------
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
[OnePnL SSIS] $ powershell.exe -NonInteractive -ExecutionPolicy ByPass "& 'C:\Users\SVC_TE~1\AppData\Local\Temp\hudson2769520726749517170.ps1'"
origin/release
[OnePnL SSIS] $ powershell.exe -NonInteractive -ExecutionPolicy ByPass "& 'C:\Users\SVC_TE~1\AppData\Local\Temp\hudson7860003244522954499.ps1'"
Branch
origin/release
Output directory
\\inv\Shared\Transfer - Deleted Weekly\Jenkins\BI\OnePnL\SSIS Jenkins builds\origin/release\Build 74


    Directory: \\inv\Shared\Transfer - Deleted Weekly\Jenkins\BI\OnePnL\SSIS 
    Jenkins builds\origin\release


Mode                LastWriteTime     Length Name                              
----                -------------     ------ ----                              
d----        10/26/2015   4:29 PM            Build 74                          

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows                              
-------------------------------------------------------------------------------

  Started : Monday, October 26, 2015 4:29:01 PM
   Source : D:\te_jenprodslave_1\workspace\Trade_Efficiencies\BI\OnePnL SSIS\ETL\Project Type 0\bin\DEFAULT\
     Dest : \\inv\Shared\Transfer - Deleted Weekly\Jenkins\BI\OnePnL\SSIS Jenkins builds\origin\release\Build 74\

    Files : *.*

  Options : *.* /V /S /E /DCOPY:DA /COPY:DAT /R:1000000 /W:30 

------------------------------------------------------------------------------

                       1    D:\te_jenprodslave_1\workspace\Trade_Efficiencies\BI\OnePnL SSIS\ETL\Project Type 0\bin\DEFAULT\
        New File          516475    OnePnL.ispac
  0%  
 25%  
 50%  
 76%  
100%  

------------------------------------------------------------------------------

               Total    Copied   Skipped  Mismatch    FAILED    Extras
    Dirs :         1         0         0         0         0         0
   Files :         1         1         0         0         0         0
   Bytes :   504.3 k   504.3 k         0         0         0         0
   Times :   0:00:00   0:00:00                       0:00:00   0:00:00


   Speed :            43039583 Bytes/sec.
   Speed :            2462.744 MegaBytes/min.
   Ended : Monday, October 26, 2015 4:29:01 PM

Done Copy


Build step 'Windows PowerShell' marked build as failure

答案就在您链接的帖子中。

the 最后一个命令的退出代码Jenkin 的执行 Shell 构建步骤的决定了构建步骤的成功/失败

我知道你已经明白了这么多,但是让它发挥作用的是robocopy 的返回代码 https://support.microsoft.com/en-us/kb/954404这是你最后的命令。虽然该链接适用于服务器 2008,但如果它们是通用操作系统,我不会感到惊讶。

Value   Description
0       No files were copied. No failure was encountered. No files were mismatched. The files already exist in the destination directory; therefore, the copy operation was skipped.
1       All files were copied successfully.

如果所有文件均已成功复制,则返回代码为 1。Anything正如我们在链接问题中所读到的,除了 0 之外的其他值都被构建步骤报告为失败。


我认为你需要做的是检查 robocopy 的返回码并更改它。

要检查它,您需要查看PowerShell 自动变量 $? https://technet.microsoft.com/en-us/library/hh847768.aspx

$?
包含上次操作的执行状态。它包含 如果上次操作成功则为 TRUE,如果失败则为 FALSE。

所以最后几行可能是......

ROBOCOPY "$env:WORKSPACE\ETL\Project Type 0\bin\DEFAULT" "$outputdir" /E /v
If($?){exit 0}

这应该做的是从 robocopy 获取任何非零结果并强制脚本返回 true。再次请注意,这将为所有返回代码返回 OK。如果这是不可取的,那么您可以轻松地为某些代码构建一些逻辑。

我无法真正测试这段代码,因为我没有你的环境,但理论上它应该可以工作,或者至少可以让你开始你需要的地方。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

构建步骤“Windows PowerShell”将构建标记为失败,为什么? 的相关文章

  • powershell 将文件添加到 zip

    我正在尝试使用 powershell 将文件添加到 zip 文件 我可以创建 zip 文件 但无法弄清楚如何将我的文件添加到其中 我在用着 zipfilename c cwRsync backup zip file c cwRsync ba
  • 如何从詹金斯管道获取所有参数(参数化构建)?

    我正在较新版本的 jenkins 中构建一个参数化管道作业 在较旧版本的 jenkins 中 我使用 getbinding getVariables 来检索所有参数 但较新的版本它返回空值 如何在新版本的詹金斯中检索参数 全部 您可以使用
  • 带有 UiPath 的 Powershell

    我正在使用 UiPath 启动 PowerShell 脚本 我需要从 UiPath 传递一个参数 首先这可能吗 其次有人有这方面的例子吗 不确定 PowerShell 脚本中的语法是什么 是否可以将参数从 UiPath 传递到终端 您的 P
  • Powershell 4 对于 tls 1.2 来说太旧了?

    我有一个带有 powershell 4 的 Windows Server 2012R2 一个sql作业发出一个Invoke WebRequest https someserver file xml OutFile c tmp data xm
  • Powershell 脚本无法从 SCCM 正常运行 [已关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • TeamCity 将功能分支推送到主分支

    有没有办法将成功构建的功能分支推送到另一个分支 我想要这样的东西 Git 存储库 Gitorious GitHub 等 分支机构 master 当前项目的代码 质量保证 代码等待 QA 的分支 功能分支 许多远程分支 开发人员可以在其中开发
  • 詹金斯没有运行任何作业

    我在尝试解决其他一些问题时成功地破坏了詹金斯 现在 每当我运行作业时 它都会立即失败并出现以下错误 java lang NullPointerException at java util TreeMap putAll TreeMap jav
  • 哪个持续集成服务器能够对作业进行排队?

    使用案例 CI 服务器轮询一些 VSC 存储库并为每个修订版运行测试套件 如果提交了两个或多个修订 即使在相对较小的时间间隔内 我也希望 CI 服务器将每个修订放入队列中 为每个修订运行测试 存储结果 并且不再为这些提交运行测试 而且我不希
  • 自动生成/删除詹金斯工作

    我正在寻找一种自动创建一组詹金斯作业的方法 通常在创建新的 git 分支之后 我已经为maven尝试过这个插件 http evgeny goldin com wiki Maven jenkins plugin http evgeny gol
  • 如何在 Jenkins 成功构建后触发参数化构建?

    我有三个管道项目 项目 a 项目 b 和项目 c 项目 c 采用一个参数 成功完成项目 a 或项目 b 后 我想使用参数触发项目 c 的构建 我可以在项目 a 和项目 b 中使用管道中的以下代码执行此操作 stage trigger pro
  • 在 PowerShell 中从文件名中删除路径和扩展名

    我有一系列字符串 它们是文件的完整路径 我想只保存文件名 不保存文件扩展名和主路径 所以由此可知 c temp myfile txt to myfile 我实际上并没有遍历目录 在这种情况下类似于 PowerShell 的目录basenam
  • Powershell:输出文件

    我正在尝试将所有控制台输出记录到文件中 移动项目 D scripts fileA D scripts fileB verbose Force 输出文件 D scripts move log 追加 如果该文件不存在 则正在创建该文件 但详细信
  • 驱动程序在 Jenkins 中不是可执行错误,但在本地计算机 (MacBook) 中运行

    我正在 MacBook 上工作 当我通过testing xml文件运行测试时 我们的Jenkins服务器正在Linux服务器中运行 所有测试类都在运行 但是当我运行Jenkins构建时 它没有运行 错误提示驱动程序不可执行 我已经在 J e
  • jenkins:使用 URL 传递多个“扩展选择参数”值

    我的参数之一Jenkins构建是一个扩展选择参数 https wiki jenkins ci org display JENKINS Extended Choice Parameter plugin从构建网页调用构建时 它作为逗号分隔值的选
  • 从文本文件中删除行(如果其开头为)

    我有包含无效记录的大型文本文件 我想删除第一个字段为空白的所有行 文件分隔符是波浪号 所以本质上我想删除第一个字符为 的所有行 有人可以协助编写 PowerShell 代码吗 我似乎无法正确理解 只需添加我评论中的答案部分作为答案 以便人们
  • 在 CI (Travis/Jenkins) 环境中使用 xcodebuild (Xcode 8) 和自动签名

    随着 Xcode 8 的发布 Apple 引入了一种管理签名配置的新方法 现在你有两个选择Manual and Automatic 根据 WWDC 2016 关于代码签名的会议 WWDC 2016 401 Xcode 应用签名的新增功能 h
  • 如果未提供值,如何从 cmdlet 中省略 powershell 参数?

    我正在尝试执行下面的 Powershell 命令 在交换服务器上创建一个新的地址列表 其中包含名称 容器等参数 Container是可选输入 参数 如果未提供其值 如何从 cmdlet 中省略它 我尝试过IF有条件但但似乎不起作用 这里有什
  • 在 PowerShell 中过滤 TreeView 节点

    我的 TreeView 中有大量节点 并且有一个文本框可以过滤它们以突出显示匹配的搜索 然而 它有点混乱 因为它显示了所有其他节点 并且在我更改搜索后 它使所有节点都展开 我正在尝试做这样的事情 https www codeproject
  • 在 Powershell 中使用用户名/密码连接到网络文件夹

    我经常在 Powershell 中访问共享网络文件夹以获取文件等 但如果共享需要用户名 密码 Powershell 不会提示我输入这些信息 这与 Windows 资源管理器不同 如果我首先在 Windows 资源管理器中连接到该文件夹 Po
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal

随机推荐