Цель задачи — проверить процесс сборки в конвейере GitLab CI/CD с помощью PowerShell без сохранения каких-либо файлов на сервере. В частности, задача включает проверку различий в конфигурации между файлами Web.Config и Web.xyz.Config.
В настоящее время проблема заключается в том, что, несмотря на запуск msbuild и запись его результатов, конвейер выходит из строя. Он должен обнаружить конкретное сообщение об ошибке (No element in the source document matches
). И не выводится Build failed due to missing configuration key.
.
Я новичок в PowerShell и буду признателен за вашу помощь.
- echo "Verifying build…"
- |
$msbuildOutput = & "C:/thePath/MSBuild.exe" OurProject.sln /p:Configuration=Demo
if ($msbuildOutput -match "No element in the source document matches")
{
echo "Build failed due to missing configuration key."
exit 1
}
Я также попробовал Write-Host
Обновлено: понятно, конвейер все равно вышел из строя, а не из-за exit 1
.
журнал:
- echo "Verifying build…"
- |
$msbuildOutput = & $MSBUILD_PATH "$Our_ASMX_PROJECT_PATH" /p:Configuration=Demo
if ($msbuildOutput | Select-String -Pattern "No element in the source document matches")
{
echo "Build failed due to missing configuration key."
exit 1
}
Мне пришлось создать журнал ($log), чтобы попробовать, заменить переменную на вашу ($msbuildOutput) и попробовать.
$log = Get-Content C:\ZZZ\SSSSS.log
$pattern = "No element in the source document matches"
$matches = $log | Select-String -Pattern $pattern | ForEach-Object { $_.Line }
if ($matches) {
Write-Host "Build failed due to missing configuration key."
#exit
}
else{
Write-Host "Continue the action"
}
Я пропустил $msbuildOutput = & $MSBUILD_PATH "$Our_ASMX_PROJECT_PATH" /Target:Rebuild /property:Configuration=Demo /T:Package
Спасибо за ответ. Но мне нужно прочитать переменную ($msbuildOutput), которой я ранее назначил сборку.
$matches
это неправда.- | $msbuildOutput = & $MSBUILD_PATH "$Our_ASMX_PROJECT_PATH" /p:Configuration=Demo $pattern = "No element in the source document matches" $matches = $msbuildOutput | Select-String -Pattern $pattern | ForEach-Object { $_.Line } if ($matches) { Write-Host "Build failed due to missing configuration key." exit 1 }