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.

Другие вопросы по тегам