Windows Server 2016上Jenkins流水线执行PowerShell脚本及Robocopy时偶发异常的解决求助
Windows Server 2016上Jenkins流水线执行PowerShell脚本及Robocopy时偶发异常的解决求助
各位好,我最近在Windows Server 2016上的Jenkins流水线中运行MSVC程序的构建脚本时,遇到了两个偶发的异常问题,本地运行脚本完全正常,但在Jenkins里就时不时出问题,实在摸不着头脑,想请教下大家有没有解决思路。
环境信息
- 操作系统:Windows Server 2016
- CI/CD工具:Jenkins(部署在同一台Windows Server 2016机器上)
- 构建方式:通过PowerShell脚本编译MSVC程序
遇到的偶发异常
这两个异常不会同时出现,第二种情况发生的概率更高,一旦出现会直接导致流水线失败:
异常1:PowerShell构建脚本偶发报错,但流水线仍正常完成
执行构建脚本时偶尔会抛出如下错误,但奇怪的是流水线并没有失败,依然能走完流程:
powershell.exe : build sdk include:C:\Program Files\Huawei\DevEco Studio\sdk\default\openharmony\native\sysroot\usr\include
D:\data\workspace\CTP_COMPILE_develop\ctp\ctp_build@tmp\durable-a9a169cf\powershellWrapper.ps1:3 character: 1
- & powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -Comm ...
- CategoryInfo : NotSpecified: (build sdk inclu...oot\usr\include:String) [], RemoteException
- FullyQualifiedErrorId : NativeCommandError
异常2:Robocopy执行完成后偶发终止流水线
执行Robocopy命令复制文件时,偶尔会在命令正常结束后直接终止流水线,导致构建失败。
相关代码片段
Jenkins流水线部分脚本
String thirdPartySrc = "D:\\deps\\thirdparty" String thirdPartyDest = "thirdparty" echo "Copying ctp_thirdparty from ${thirdPartySrc} to ${thirdPartyDest}" bat """ robocopy "${thirdPartySrc}" "${env.WORKSPACE}\\${thirdPartyDest}" /MIR /XC /XO /XN """ dir("build") { powershell """ .\\build_targets.ps1 -TARGET_OS harmonyos -TARGET_ARCH x86_64 -INTERACTIVE_MODE 0 -BUILD_TYPE Release """ powershell """ .\\build_targets.ps1 -TARGET_OS win -TARGET_ARCH x86_64 -INTERACTIVE_MODE 0 -BUILD_TYPE Release -CLEAN_ALL 1 """ }
PowerShell构建脚本核心代码
$cmakeArg = $env:OHOS_CMAKE_COMMON_ARG + "-B `"$BUILD_CACHE_FOLDER/$CURRENT_PROJECT`"" Write-Host "$CURRENT_PROJECT cmakeArg: $cmakeArg" # compile Start-Process -NoNewWindow -Wait $env:OHOS_CMAKE_BIN -ArgumentList $cmakeArg $processReturn = Start-Process -NoNewWindow -PassThru -Wait $env:OHOS_CMAKE_BIN -ArgumentList "--build `"$BUILD_CACHE_FOLDER/$CURRENT_PROJECT`"" if ($processReturn.ExitCode -ne 0) { Write-Error "Build $CURRENT_PROJECT failed" cd $ROOT_DIR\${PROJECT_PREFIX}_build exit 1 }
我的猜测
我怀疑这些偶发问题和PowerShell的执行环境,或者Jenkins调用PowerShell的方式有关,但不确定具体原因,有没有大佬能指点下怎么排查和解决这些问题?
内容来源于stack exchange
相关产品推荐
相关产品推荐

