Конвейеры Azure Devops - соедините шаг «VS Build» с шагом «Archive Files» - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь использовать конвейеры Azure Devops, и мой первый любимый проект - это простое приложение командной строки .NET, которое я пытаюсь создать.

Я выбрал "VS Build"..NET Desktop "шаблон задачи, и сборка сама по себе работает нормально - биты компилируются без проблем

YAML:

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

Журнал:

##[section]Starting: VSBuild
==============================================================================
Task         : Visual Studio build
Description  : Build with MSBuild and set the Visual Studio version property
Version      : 1.151.2
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/build/visual-studio-build
==============================================================================

##[command]"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" "d:\a\1\s\AzureDevopsTaskCreator.sln" 
...(lots of lines omitted)
CopyFilesToOutputDirectory:
  Copying file from "d:\a\1\s\obj\Release\AZTaskCreator.exe" to "d:\a\1\s\bin\Release\AZTaskCreator.exe".
  AZTaskCreator -> d:\a\1\s\bin\Release\AZTaskCreator.exe
  Copying file from "d:\a\1\s\obj\Release\AZTaskCreator.pdb" to "d:\a\1\s\bin\Release\AZTaskCreator.pdb".

Нотеперь я хотел как-то опубликовать вывод этой сборки, чтобы я мог скачать его (или развернуть где-нибудь).Но я изо всех сил пытался соединить эти вещи.

Поэтому я попытался сначала сжать выходные данные сборки в архив (который затем мог быть опубликован):

YAML

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(Build.BinariesDirectory)'
    includeRootFolder: true
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/AZCreateTasks$(Build.BuildId).zip'
    replaceExistingArchive: true
    verbose: true

Журнал:

##[section]Starting: ArchiveFiles  
##[command]d:\a\_tasks\ArchiveFiles_d8b84976-e99a-4b86-b885-4849694435b0\2.151.2\7zip\7z.exe a -tzip -bb3 d:\a\1\a\AZCreateTasks8.zip @d:\a\_temp\yat6561e8redmiomp7bbuik9

Моя проблема: КАК можно ли указать шагу «Архивные файлы» использовать выходной каталог предыдущегостроить?Я предполагал, что по умолчанию $(Build.BinariesDirectory) будет делать это - но, очевидно, это не так:

  • Вывод из VS Build идет в каталог d:\a\1\s\bin\Release\
  • Шаг Архивирование файловархивирует файлы в d:\a\_temp\yat6561e8redmiomp7bbuik9 каталоге

Как я могу "соединить" эти два шага, чтобы шаг "Архивные файлы" действительно учитывал и использовал выходной каталог шага VS Build ??

Мне ужасно трудно найти какую-либо полезную документацию о том, какие "магические переменные, предопределенные системой" находятся здесь, и как на них влиять .....

1 Ответ

1 голос
/ 24 июня 2019

Согласно журналу, выходные данные сборки находятся в папке d:\a\1\s\... s в каталоге исходных файлов, для доступа к этой папке существует предопределенное переменное значение: Build.SourcesDirectory.

Таким образом, вместо использования $(Build.BinareisDircetory) используйте вышеуказанную переменную:

rootFolderOrFile: '$(Build.SourcesDirectory)'

Но теперь вы получите zip, если исходные файлы включают dll, так что попробуйте добавить путь до нужной вам папки / s.

Например:

rootFolderOrFile: '$(Build.SourcesDirectory)/obj/Release'
...