Azure DevOps Pipeline ArchiveFiles создает пустой архив из папки сборки.
Я настроил конвейер сборки Azure DevOps. Все работает нормально, кромеArchiveFiles
шаг, который должен создать артефакт для последующей публикации в Azure.
Я использую следующую конфигурацию YAML:
- script: |
call dist.bat
tree /A /F
displayName: 'build'
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: $(Build.BinariesDirectory)
includeRootFolder: true
archiveType: 'zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
replaceExistingArchive: true
verbose: true
В dist.bat
строит проект и размещает полученные архивы в dist/
в локальном каталоге. Вtree
показывает, что файлы сгенерированы правильно и находятся в папке.
Finished building distributable exe including resources and dependencies
Final distributable folder is dist\
Folder PATH listing for volume Temporary Storage
Volume serial number is 000000F9 5455:3543
D:.
| .gitignore
| azure-pipelines.yml
| dist.bat
| Main.py
| Main.spec
| Pipfile
| Pipfile.lock
| __init__.py
|
+---dist
| | MyApp.exe
| | default.ini
| | User Guide.pptx
| |
| \---resources
| | default-german.ini
| |
| +---configurations
| \---templates
| Template_InputData_English.xlsx
|
Когда дело доходит до ArchiveFiles
задача $(Build.BinariesDirectory)
установлен на dist/
. Согласно выходному журналу, эта папка найдена. Однако это всего лишь пустой каталог с 0 файлами и 0 байтами в нем:
[command]d:\a\_tasks\ArchiveFiles_d8b84976-e99a-4b86-b885-4849694435b0\2.159.0\7zip\7z.exe a -tzip -bb3 -mx=5 d:\a\1\a\1487.zip @d:\a\_temp\bfoix61oaayw7eqhcvclahsemi
7-Zip [64] 16.00 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-10
Scanning the drive:
1 folder, 0 files, 0 bytes
Creating archive: d:\a\1\a\1487.zip
Items to compress: 1
Files read from disk: 0
Archive size: 138 bytes (1 KiB)
Everything is Ok
Возможно, мне не хватает какой-то ошибки конфигурации? Я думаю, что это может быть связано с путаницей некоторых путей, но отлаживать из-за укороченных путей к файлам и отсутствующей контекстной информации сложно. Следующее показано в журнале отладки дляArchiveFiles
задача:
##[debug]agent.workFolder=d:\a
[...]
##[debug]System.DefaultWorkingDirectory=d:\a\1\s
##[debug]rootFolderOrFile=d:\a\1\b
##[debug]makeAbsolute:d:\a\1\b
##[debug]includeRootFolder=true
##[debug]archiveType=zip
##[debug]archiveFile=d:\a\1\a\1487.zip
##[debug]replaceExistingArchive=true
[...]
##[debug]Listing all 1 files to archive:
##[debug]b
##[debug]Checking for archive destination folder:d:\a\1\a
##[debug]Creating archive with 7-zip: d:\a\1\a\1487.zip
[...]
##[debug]exec tool: d:\a\_tasks\ArchiveFiles_d8b84976-e99a-4b86-b885-4849694435b0\2.159.0\7zip\7z.exe
##[debug]Arguments:
##[debug] a
##[debug] -tzip
##[debug] -bb3
##[debug] -mx=5
##[debug] d:\a\1\a\1487.zip
##[debug] @d:\a\_temp\bfoix61oaayw7eqhcvclahsemi
Спасибо за помощь!
1 ответ
Вы не устанавливаете переменную Build.BinariesDirectory
, эта переменная назначается системой и указывает на определенное место в рабочей папке вашего агента.
Вам необходимо обновить процесс сборки, чтобы скопировать его по пути, указанному в Build.BinariesDirectory
.