You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 07:58:01