Не удается найти требуемый файл, ошибка при использовании SolutionPackager для упаковки решения Dynamics 365 в Azure Devops Build Step - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь использовать Azure конвейеры DevOps для «упаковки» (с использованием Dynamics 365 CoreTools / SolutionPackager.exe) решения из Azure Repo для создания zip-файла в качестве артефакта.

Мой конвейер сборки имеет следующие шаги. Шаг 1. Установите Solution Packager. Это сценарий PowerShell, который устанавливает упаковщик решений в агент сборки. Для тех, кто пытается сделать то, что я делаю, вот код.

$sourceNugetExe = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
$targetNugetExe = ".\nuget.exe"
Remove-Item .\Tools -Force -Recurse -ErrorAction Ignore
Invoke-WebRequest $sourceNugetExe -OutFile $targetNugetExe
Set-Alias nuget $targetNugetExe -Scope Global -Verbose

./nuget install  Microsoft.CrmSdk.CoreTools -O .\Tools
md .\Tools\CoreTools
$coreToolsFolder = Get-ChildItem ./Tools | Where-Object {$_.Name -match 'Microsoft.CrmSdk.CoreTools.'}
move .\Tools\$coreToolsFolder\content\bin\coretools\*.* .\Tools\CoreTools
Remove-Item .\Tools\$coreToolsFolder -Force -Recurse

Remove-Item nuget.exe

Шаг 2: Создайте решение. Это также сценарий PowerShell, показанный ниже.

Write-Host $Env:BUILD_SOURCESDIRECTORY

cmd.exe /c "$Env:BUILD_SOURCESDIRECTORY\Tools\CoreTools\SolutionPackager.exe /action:Pack /zipfile:$Env:BUILD_SOURCESDIRECTORY\Releases\Release1\PhoneBook.zip /folder:$Env:BUILD_SOURCESDIRECTORY\DeploymentAutomation\PhoneBookSolutionExtract /packageType:Both /log:$Env:BUILD_SOURCESDIRECTORY\Releases\Release1\PBSolutionPackagerLog-Packer.txt"

Шаг 1 выполняется успешно. Однако на шаге 2 возникает эта ошибка.

=================================== ========

2020-05-26T15:28:59.8552200Z ##[section]Starting: Create Solutions For Release
2020-05-26T15:28:59.8797381Z ==============================================================================
2020-05-26T15:28:59.8827561Z Task         : PowerShell
2020-05-26T15:28:59.8835720Z Description  : Run a PowerShell script on Linux, macOS, or Windows
2020-05-26T15:28:59.8843310Z Version      : 2.169.0
2020-05-26T15:28:59.8849328Z Author       : Microsoft Corporation
2020-05-26T15:28:59.8860104Z Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/powershell
2020-05-26T15:28:59.8893584Z ==============================================================================
2020-05-26T15:29:00.8519134Z Generating script.
2020-05-26T15:29:00.8970243Z ========================== Starting Command Output ===========================
2020-05-26T15:29:00.9225660Z ##[command]"C:\windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ". 'd:\a\_temp\d09c6a36-7a76-47b0-92eb-9e6107517075.ps1'"
2020-05-26T15:29:01.2594475Z d:\a\1\s
2020-05-26T15:29:01.7233931Z SolutionPackger CRM Solution Packaging Tool [Version 9.1.0.45]
2020-05-26T15:29:01.7243873Z © 2017 Microsoft Corporation.  All rights reserved
2020-05-26T15:29:01.7249166Z 
2020-05-26T15:29:06.5096584Z 
2020-05-26T15:29:06.5110471Z Packing d:\a\1\s\DeploymentAutomation\PhoneBookSolutionExtract to d:\a\1\s\Releases\Release1\PhoneBook.zip and d:\a\1\s\Releases\Release1\PhoneBook_managed.zip
2020-05-26T15:29:06.5120793Z 
2020-05-26T15:29:06.6894038Z Cannot find required file 'd:\a\1\s\DeploymentAutomation\PhoneBookSolutionExtract\Other\Customizations.xml'.
2020-05-26T15:29:06.6906958Z See log file 'd:\a\1\s\Releases\Release1\PBSolutionPackagerLog-Packer.txt' for details.
2020-05-26T15:29:06.9902672Z SolutionPackager: Exception thrown: Microsoft.Crm.Tools.SolutionPackager.DiskReaderException: Cannot find required file 'd:\a\1\s\DeploymentAutomation\PhoneBookSolutionExtract\Other\Customizations.xml'.
2020-05-26T15:29:06.9924366Z    at Microsoft.Crm.Tools.SolutionPackager.DiskReader.Load()
2020-05-26T15:29:06.9938677Z    at Microsoft.Crm.Tools.SolutionPackager.SolutionPackager.Run(IPackageReader reader, IPackageWriter writer)
2020-05-26T15:29:06.9950963Z    at Microsoft.Crm.Tools.SolutionPackager.SolutionPackager.Run()
2020-05-26T15:29:06.9962227Z    at Microsoft.Crm.Tools.SolutionPackager.Program.Main(String[] args), returning error code '1'
2020-05-26T15:29:07.2240607Z ##[error]PowerShell exited with code '1'.
2020-05-26T15:29:07.2727244Z ##[section]Finishing: Create Solutions For Release

================================= ==========

Я проверил как минимум 1000 раз и файл Customizations. xml СУЩЕСТВУЕТ в указанном месте. Это может быть что-то действительно глупое, чего мне не хватает, так как я ПЕРВЫЙ раз пытаюсь автоматизировать развертывание Dynamics 365 с помощью Azure DevOps Pipelines, поэтому я буду очень благодарен за любую помощь в понимании этой ошибки. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Не удается найти нужный файл ...... Other \ Customizations. xml

Согласно сообщению об ошибке, эта проблема связана с параметром /folder.

Я тестирую аналогичную команду SolutionPackager.exe. Если существует Customizations. xml, задача PowerShell завершится успешно.

Zip File

Поэтому вам необходимо убедиться, что путь к папке правильно.

С одной стороны, вы можете экспортировать файловую структуру, как это было предложено Эри c Смитом. Затем вы можете изменить путь.

С другой стороны, вы можете попробовать добавить задачу «Копировать файлы» перед шагом 2.

Пожалуйста, используйте ... для выбора папки

Copy file task

Если файлы существовали в папке, в журнале задач будет отображаться информация.

file exists

Если их нет, эти файлы будут скопированы в указанное место.

Кстати, убедитесь, что вы выбрали правильную ветку для запуска сборка

Надеюсь, это поможет.

0 голосов
/ 27 мая 2020

Я вскочу и постараюсь помочь. Я не очень много работал с SolutionPackager.exe, но, следуя этому руководству , я смог извлечь, а затем упаковать решение. Можете ли вы сделать пакет локально?

Предположим, вы запустили команду извлечения локально, а затем зафиксировали все в своем репозитории. Насколько вы уверены, что Customizations. xml действительно зарегистрированы в репозитории и находятся в каталоге источников?

Вы можете go и дважды проверить сам репозиторий, или вы также можете использовать этот фрагмент yaml для распечатки дерева структуры каталогов для проверки работоспособности.

- task: PowerShell@2
  displayName: tree $(Build.SourcesDirectory)
  inputs:
    targetType: 'inline'
    script: 'tree /F'
    pwsh: true
    workingDirectory: '$(Build.SourcesDirectory)'
...