GitLab Pipeline执行报错:eval: line 159: unexpected EOF 求解决
GitLab Pipeline 执行失败报错解决
错误原因
报错eval: line 159: unexpected EOF while looking for matching是因为Pipeline脚本中存在引号不匹配的语法错误,导致Shell解析时无法找到对应的闭合引号,同时还有路径转义的错误。
具体问题与修复
1. NuGet还原命令语法错误
原脚本中:
'env:NUGET_PATH" restore'
- 引号不匹配:单引号开头却用双引号结尾,造成解析失败。
- PowerShell调用外部命令语法错误:需要用
&来执行变量指向的可执行文件。
修复为:
& "$env:NUGET_PATH" restore
2. MSBUILD发布路径转义错误
原MSBUILD命令中的/p:publishUrl=.in\publish:
.in是错误的转义写法,会被解析为退格符,实际要表示当前目录下的bin文件夹,应改为.\bin。
修复后的MSBUILD命令:
& "$env:MSBUILD_PATH" .\Solution1.sln /p:Configuration=Release /p:DeployOnBuild=True /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl=.\bin\publish /clp:ErrorsOnly
修复后的完整Pipeline配置
stages: # List of stages for jobs, and their order of execution - build - test - deploy-uat variables: NUGET_PATH: 'C:\GitLab-Runner\nuget.exe' MSBUILD_PATH: 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\MSBuild.exe' TEST_TOOL_EXE: 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\Extensions\TestPlatform\vstest.console.exe' build-job: # This job runs in the build stage, which runs first. stage: build script: - echo "$CI_PROJECT_DIR" - '& "$env:NUGET_PATH" restore' - echo "Clean & Build Solution" - '& "$env:MSBUILD_PATH" .\Solution1.sln /p:Configuration=Release /p:DeployOnBuild=True /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl=.\bin\publish /clp:ErrorsOnly' artifacts: expire_in: 2 days paths: - "**/bin" - "**/obj" rules: - if: ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main")
内容的提问来源于stack exchange,提问作者karthick
相关产品推荐
相关产品推荐

