Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
В этой статье описывается, как использовать Azure Pipelines для работы с проектами .NET Core. В этой статье рассматриваются следующие задачи:
- Создайте веб-приложение .NET Core и отправьте его в репозиторий GitHub.
- Создайте проект Azure DevOps и конвейер Azure Pipelines для сборки проекта.
- Настройте среду сборки с помощью локальных агентов.
- Восстановление зависимостей, сборка проекта и тестирование с помощью задачи .NET Core (
DotNetCoreCLI@2
) или скрипта. - Используйте задачу .NET Core (
DotNetCoreCLI@2
) для добавления других команд пакета SDK для .NET в конвейер. - Используйте задачу "Опубликовать результаты покрытия кода " (
Publish code coverage results v2
) для публикации результатов покрытия кода. - Упаковайте и доставьте выходные данные сборки в конвейер, веб-канал NuGet, ZIP-архив или другие целевые объекты.
- Создайте веб-приложение .NET Core и отправьте его в репозиторий GitHub.
- Создайте проект Azure DevOps и конвейер Azure Pipelines для сборки проекта.
- Настройте среду сборки с помощью размещенных корпорацией Майкрософт или локальных агентов.
- Восстановление зависимостей, сборка проекта и тестирование с помощью задачи .NET Core (
DotNetCoreCLI@2
) или скрипта. - Используйте задачу .NET Core (
DotNetCoreCLI@2
) для добавления других команд пакета SDK для .NET в конвейер. - Используйте задачу "Опубликовать результаты покрытия кода " (
Publish code coverage results v2
) для публикации результатов покрытия кода. - Упаковайте и доставьте выходные данные сборки в конвейер, веб-канал NuGet, ZIP-архив или другие целевые объекты.
Примечание.
Сведения о работе с проектами .NET Framework см. в статье "Сборка ASP.NET приложений с помощью .NET Framework".
Предварительные условия
Для выполнения всех процедур, описанных в этой статье, необходимо выполнить следующие предварительные требования:
- Организация Azure DevOps. Вы можете создать бесплатную учетную запись.
- Членство в группе администраторов проектов организации, чтобы создать проекты Azure DevOps и предоставить доступ к конвейерам. Владельцы организации Azure DevOps автоматически имеют это членство.
- Проект Azure DevOps в организации. Создайте проект в Azure DevOps.
- Возможность запускать конвейеры в агентах, размещенных корпорацией Майкрософт, запрашивая бесплатный уровень параллельных заданий. Для обработки этого запроса может потребоваться несколько рабочих дней. Дополнительные сведения см. в разделе "Настройка и оплата параллельных заданий".
- Роль администратора или создателядля подключений к службам, которые можно назначить администратором проекта.
- Учетная запись и репозиторий GitHub .
Для выполнения всех процедур, описанных в этой статье, необходимо выполнить следующие предварительные требования:
- Коллекция Azure DevOps.
- Проект Azure DevOps, созданный в организации. Инструкции см. в статье "Создание проекта в Azure DevOps".
- Членство в группе "Администраторы проектов", чтобы создать проекты Azure DevOps и предоставить доступ к конвейерам. Владельцы организации Azure DevOps автоматически имеют это членство.
- Роль администратора или создателядля подключений к службам, которые можно назначить администратором проекта.
- Учетная запись и репозиторий GitHub .
Создание проекта .NET и его отправка в GitHub
Если вы хотите использовать проект .NET уже в репозитории GitHub, можно пропустить этот раздел.
Если у вас нет проекта .NET для работы, создайте его на локальном компьютере следующим образом:
- Установите пакет SDK для .NET 8.0 или убедитесь, что он установлен.
- Откройте окно терминала на локальном компьютере.
- Создайте каталог проекта и перейдите к нему.
- Создайте веб-приложение .NET 8, выполнив команду
dotnet new webapp -f net8.0
. - Выполните сборку и запуск приложения локально с помощью
dotnet run
. - Когда приложение запускается, нажмите клавиши CTRL+C, чтобы завершить работу приложения.
- Отправьте или подключите локальный проект к репозиторию GitHub.
Создание конвейера
Если у вас есть конвейер, который вы хотите использовать, можно пропустить этот раздел. В противном случае можно использовать редактор конвейера YAML или классический редактор для создания конвейера следующим образом:
В проекте Azure DevOps выберите Pipelines в меню навигации слева.
Выберите новый конвейер или создать конвейер , если этот конвейер является первым в проекте.
На экране " Где находится код " выберите GitHub.
Возможно, вас перенаправят на GitHub для входа. Для этого введите учетные данные GitHub.
На экране "Выбор репозитория" выберите репозиторий , в который находится приложение .NET.
Вы можете перенаправиться на GitHub, чтобы установить приложение Azure Pipelines. В этом случае выберите " Утвердить" и "Установить".
На вкладке "Настройка" выберите " Показать больше ", а затем в списке выберите шаблон конвейера ASP.NET Core . Этот шаблон содержит множество шагов и параметров, описанных в этой статье.
Вы также можете выбрать конвейер starter на вкладке "Настройка" , чтобы начать с минимального конвейера и добавить шаги и параметры самостоятельно.
На вкладке "Проверка " проверьте код YAML. Файл можно настроить для ваших требований. Например, можно указать другой пул агентов или добавить задачу для установки другого пакета SDK для .NET.
В проекте Azure DevOps выберите Pipelines в меню навигации слева.
Выберите новый конвейер или создать конвейер , если этот конвейер является первым в проекте.
Выберите тип исходного репозитория. В этом примере используйте GitHub Enterprise Server.
На следующем экране введите следующие сведения:
- URL-адрес учетной записи GitHub, например
https://github.com/myname
. - Личный маркер доступа GitHub (PAT).
- Например
my-github
, имя подключения службы.
- URL-адрес учетной записи GitHub, например
Нажмите кнопку создания.
Выберите репозиторий GitHub.
На вкладке "Настройка" выберите "Показать больше " и выберите шаблон конвейера ASP.NET Core из списка. Этот шаблон содержит множество шагов и параметров, описанных в этой статье.
Изучите новый код конвейера YAML. Вы можете настроить YAML-файл для ваших требований. Например, можно добавить задачу для установки другого пакета SDK для .NET или тестирования и публикации проекта.
Когда будете готовы, выберите Сохранить и запустить.
При необходимости измените сообщение "Фиксация", а затем нажмите кнопку "Сохранить и снова запустить ".
На вкладке "Сводка " выберите задание в разделе "Задания" , чтобы просмотреть конвейер в действии.
Теперь у вас есть рабочий конвейер, готовый к настройке.
Настройка среды сборки
Azure Pipelines использует локальные агенты для создания проекта .NET Core. Пакет SDK для .NET Core и среду выполнения можно использовать в агентах Windows, Linux, macOS или Docker . Убедитесь, что на агентах установлена необходимая версия пакета SDK для .NET Core и среды выполнения.
Чтобы установить определенную версию пакета SDK для .NET, добавьте UseDotNet@2
задачу в файл конвейера YAML или задачу Use .NET Core в классическом редакторе.
Примечание.
Для агентов, работающих в физических системах, установка пакетов SDK и средств через конвейер изменяет среду сборки на узле агента.
В следующем примере фрагмент кода YAML устанавливает пакет SDK для .NET 8.0.x:
steps:
- task: UseDotNet@2
inputs:
version: '8.x'
Чтобы установить новый пакет SDK, установите для performMultiLevelLookup
этого значение true
.
steps:
- task: UseDotNet@2
displayName: 'Install .NET Core SDK'
inputs:
version: 8.x
performMultiLevelLookup: true
includePreviewVersions: true # Required for preview versions
Вы можете выбрать пул агентов и агента для задачи сборки. Вы также можете указать агенты на основе их возможностей. Например, следующий фрагмент кода конвейера YAML выбирает возможности пула и агента.
pool:
name: myPrivateAgents
demands:
- agent.os -equals Darwin
- anotherCapability -equals somethingElse
Вы можете создавать проекты .NET Core с помощью пакета SDK для .NET Core и среды выполнения для Windows, Linux или macOS. По умолчанию сборки выполняются в агентах, размещенных корпорацией Майкрософт, поэтому вам не нужно настраивать инфраструктуру.
Размещенные корпорацией Майкрософт агенты Azure Pipelines включают несколько предварительно установленных версий поддерживаемых пакетов SDK для .NET Core. Полный список доступных образов и примеров конфигурации см. в размещенных майкрософт агентах .
Следующий фрагмент кода конвейера YAML задает ОС Ubuntu для пула агентов.
pool:
vmImage: 'ubuntu-latest'
Агенты, размещенные в Майкрософт, не включают некоторые старые версии пакета SDK для .NET Core и обычно не включают предварительные версии. Если вам нужны эти версии пакета SDK для агентов, размещенных в Майкрософт, их можно установить с помощью задачи Use DotNet (UseDotNet@2).
Например, следующий код устанавливает пакет SDK для .NET 5.0.x:
steps:
- task: UseDotNet@2
inputs:
version: '5.x'
Агенты Windows уже включают среду выполнения .NET Core. Чтобы установить более новый пакет SDK, задайте performMultiLevelLookup
для true
следующего фрагмента кода:
steps:
- task: UseDotNet@2
displayName: 'Install .NET Core SDK'
inputs:
version: 8.x
performMultiLevelLookup: true
includePreviewVersions: true # Required for preview versions
Локальные агенты
Кроме того, можно использовать локальные агенты для создания проектов .NET Core. Вы можете настроить локальные агенты Linux, macOS или Windows .
Локальные агенты позволяют вам:
- Избегайте затрат на запуск установщика
UseDotNet@2
средства. - Уменьшите время сборки, если у вас есть большой репозиторий.
- Выполнение добавочных сборок.
- Используйте предварительные версии или частные пакеты SDK, которые корпорация Майкрософт официально не поддерживает.
- Используйте пакеты SDK, доступные только в корпоративных или локальных средах.
Дополнительные сведения см. в разделе "Локальные агенты".
Восстановить зависимости
Пакеты NuGet — это способ для проекта зависеть от кода, который вы не создаете. Вы можете скачать пакеты NuGet и инструменты для конкретного проекта, выполнив dotnet restore
команду либо с помощью задачи .NET Core (DotNetCoreCLI@2
) или в качестве скрипта в конвейере. Команда dotnet restore
использует NuGet.exe , упакованные с помощью пакета SDK для .NET Core, и может восстанавливать только пакеты, указанные в файле проекта .NET Core *.csproj .
Задачу .NET Core (DotNetCoreCLI@2
) можно использовать для скачивания и восстановления пакетов NuGet из Артефактов Azure, NuGet.org или другого аутентифицированного внешнего или внутреннего репозитория NuGet. Если веб-канал NuGet находится в том же проекте, что и конвейер, вам не нужно проходить проверку подлинности. Дополнительные сведения см. в статье о задаче .NET Core (DotNetCoreCLI@2).
При использовании агентов, размещенных корпорацией Майкрософт, вы получаете новый компьютер при каждом запуске сборки, который восстанавливает пакеты при каждом запуске. Восстановление может занять значительное время. Чтобы устранить эту проблему, используйте Azure Artifacts или локальный агент , чтобы воспользоваться преимуществами кэша пакетов.
Следующий конвейер использует DotNetCoreCLI@2
задачу для восстановления веб-канала Артефакта Azure.
trigger:
- main
pool:
vmImage: 'windows-latest'
steps:
- task: UseDotNet@2
displayName: 'Install .NET Core SDK'
inputs:
version: 8.x
performMultiLevelLookup: true
includePreviewVersions: true # Required for preview versions
variables:
buildConfiguration: 'Release'
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'restore'
feedsToUse: 'select'
vstsFeed: 'my-vsts-feed' # A series of numbers and letters
- task: DotNetCoreCLI@2
inputs:
command: 'build'
arguments: '--configuration $(buildConfiguration)'
displayName: 'dotnet build $(buildConfiguration)'
В пакете SDK для .NET Core версии 2.0 и более поздних версий пакеты автоматически восстанавливаются при выполнении таких dotnet build
команд. Вам по-прежнему необходимо использовать задачу .NET Core (DotNetCoreCLI@2
) для восстановления пакетов, если вы используете веб-канал, прошедший проверку подлинности.
Управление учетными данными для веб-канала с проверкой подлинности путем создания подключения службы NuGet вподключениях> службы "Параметры> проекта". Дополнительные сведения о подключениях к службе NuGet см. в статье "Публикация пакетов NuGet с помощью Azure Pipelines".
Восстановление пакетов из NuGet.org
Чтобы восстановить пакеты из NuGet.org, обновите конвейер следующим образом.
Вы можете добавить команду восстановления в конвейер, изменив код YAML напрямую или с помощью помощника по задачам.
Добавьте задачу .NET CoreDotNetCoreCLI@2
() непосредственно, вставив следующий фрагмент кода в файл azure-pipelines.yml перед задачами сборки.
steps:
- task: DotNetCoreCLI@2
displayName: Restore
inputs:
command: restore
projects: '**/*.csproj'
feedsToUse: select
Чтобы использовать помощник по задачам, выполните следующие действия.
- Перейдите в положение в YAML-файле, где вы хотите вставить задачу.
- Выберите .NET Core из каталога задач.
- На экране конфигурации выберите восстановление из раскрывающегося списка команд .
- В поле "Путь к проектам" или "решения" введите путь к файлам *.csproj . Подстановочный знак **/*.csproj можно использовать для всех файлов *.csproj во всех вложенных папках.
- Чтобы добавить веб-каналы, убедитесь, что веб-каналы выбраны здесь и использовать пакеты из NuGet.org .
- Выберите Добавить.
- Выберите "Проверить и сохранить", а затем нажмите кнопку "Сохранить ", чтобы зафиксировать изменение.
Восстановление пакетов из внешнего хранилища
Чтобы указать внешний репозиторий NuGet, поместите URL-адрес в файлNuGet.config в репозиторий. Убедитесь, что в файле NuGet.config указан любой пользовательский веб-канал, а учетные данные указаны в подключении службы NuGet.
Чтобы восстановить пакеты из внешнего веб-канала, добавьте restore
задачу, как описано в предыдущем разделе, но измените параметры конфигурации следующим образом:
Добавьте задачу .NET CoreDotNetCoreCLI@2
() непосредственно, вставив следующий фрагмент кода в файл azure-pipelines.yml перед задачами сборки. Замените <NuGet service connection>
именем подключения службы.
steps:
- task: DotNetCoreCLI@2
displayName: Restore
inputs:
command: restore
projects: '**/*.csproj'
feedsToUse: config
nugetConfigPath: NuGet.config # Relative to root of the repository
externalFeedCredentials: <NuGet service connection>
Чтобы использовать помощник по задачам, выполните следующие действия.
- Добавьте задачу .NET Core и выберите восстановление на экране конфигурации, как показано в предыдущей процедуре.
- Чтобы добавить веб-каналы, выберите веб-каналы в моем NuGet.config.
- В разделе "Путь к NuGet.config" введите путь к файлу NuGet.config относительно корневого каталога репозитория. Вы можете выбрать многоточие ... рядом с полем, чтобы перейти к и выбрать расположение.
- В разделе "Учетные данные для веб-каналов за пределами этой организации или коллекции" выберите учетные данные для внешних реестров в выбранном файле NuGet.config . Для веб-каналов в той же организации можно оставить это поле пустым. Учетные данные сборки используются автоматически.
Восстановление пакетов для проектов .NET Framework
Если в решении также есть проект Microsoft .NET Framework или используетсяpackage.json для указания зависимостей, используйте задачу NuGetCommand@2 для восстановления этих зависимостей.
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
feedsToUse: 'select'
Примечание.
Для Ubuntu 24.04 или более поздней версии необходимо использовать задачу NuGetAuthenticate вместо задачи NuGetCommand@2 с помощью .NET CLI. Дополнительные сведения см. в статье "Поддержка новых размещенных образов Ubuntu".
Создайте свой проект
Создайте проект .NET Core, выполнив dotnet build
команду. Вы можете добавить команду в конвейер с помощью задачи .NET Core (DotNetCoreCLI@2
) или в качестве скрипта командной строки.
Использование задачи .NET Core
Вы можете добавить задачу сборки с редактором конвейера YAML, непосредственно изменив файл или используя помощник по задачам.
Добавьте задачу .NET CoreDotNetCoreCLI@2
() непосредственно, вставив следующий фрагмент кода.
arguments
Обновите соответствие вашим потребностям.
steps:
- task: DotNetCoreCLI@2
displayName: Build
inputs:
command: build
projects: '**/*.csproj'
arguments: '--configuration $(buildConfiguration)'
Чтобы использовать помощник по задачам, выполните следующие действия.
- Перейдите в положение в YAML-файле, где вы хотите вставить задачу.
- Выберите задачу .NET Core (
DotNetCoreCLI@2
). - Выберите сборку из раскрывающегося списка команд .
- В поле "Путь к проектам" или "решения" введите путь к файлам *.csproj . Подстановочный знак **/*.csproj можно использовать для всех файлов *.csproj во всех вложенных папках.
- Выберите Добавить.
- Нажмите кнопку "Сохранить", чтобы зафиксировать изменение.
Создание .NET Core с помощью скрипта командной строки
Можно также создать с помощью скрипта командной строки.
Чтобы добавить командную строку сборки, напрямую редактировать ФАЙЛ YAML, добавьте следующий код:
steps:
- script: dotnet build --configuration $(buildConfiguration)
displayName: 'dotnet build $(buildConfiguration)'
Вы также можете использовать помощник по задачам для добавления задачи командной строки .
- Перейдите в положение в YAML-файле, где вы хотите вставить задачу.
- Выберите задачу командной строки (
CmdLine@2
) из списка. - В поле "Скрипт" введите
dotnet build
команду с параметрами. Например,dotnet build --configuration $(buildConfiguration)
. - В разделе "Расширенный>рабочий каталог" введите путь к файлу *.csproj в качестве рабочего каталога. Если оставить его пустым, рабочий каталог по умолчанию используется
$(Build.SourcesDirectory)
. - Выберите Добавить.
- Нажмите кнопку "Сохранить", чтобы зафиксировать изменение.
Добавление других команд пакета SDK для .NET в конвейер
Другие команды пакета SDK для .NET можно добавить в конвейер с помощью задачи .NET Core (DotNetCoreCLI@2
) или скриптов.
Добавление команды .NET CLI с задачей .NET Core
Задача .NET Core (DotNetCoreCLI@2) позволяет легко добавлять команды CLI .NET в конвейер. Вы можете добавить задачи .NET Core (DotNetCoreCLI@2
) путем редактирования ФАЙЛА YAML или классического редактора.
Чтобы добавить команду .NET Core с помощью помощника по задачам в редакторе конвейера YAML, сделайте следующее:
- Перейдите в положение в YAML-файле, где вы хотите вставить задачу.
- Выберите .NET Core из каталога задач.
- Выберите команду, которую нужно выполнить в раскрывающемся списке в поле "Команда ".
- Настройте все необходимые параметры.
- Выберите Добавить.
- Нажмите кнопку "Сохранить", чтобы зафиксировать изменение.
Добавление команды .NET Core CLI в скрипт
Вы можете добавить команду CLI .NET Core в виде script
файла azure-pipelines.yml . Рассмотрим пример.
steps:
# ...
- script: dotnet test <test-project>
Установка инструмента
Чтобы установить глобальное средство .NET Core, например dotnetsay в сборке, работающей в Windows, добавьте задачу .NET Core и задайте следующие свойства в конфигурации:
- Команда: настраиваемая
- Путь к проектам: оставьте пустым
-
Настраиваемая команда:
tool
-
Аргументы:
install -g dotnetsay
Чтобы запустить средство, добавьте задачу командной строки и введите dotnetsay
в поле "Скрипт ".
Запуск тестов
При наличии тестовых проектов в репозитории можно использовать задачу .NET Core (DotNetCoreCLI@2
) для выполнения модульных тестов с помощью таких платформ тестирования, как MSTest, xUnit и NUnit. Тестовый проект должен ссылаться на Microsoft.NET.Test.SDK версии 15.8.0 или более поздней.
Результаты теста автоматически публикуются в службе и доступны в сводке сборки. Результаты теста можно использовать для устранения неполадок неудачных тестов и анализа времени тестирования.
Чтобы добавить тестовую задачу в конвейер, добавьте следующий фрагмент кода в файл azure-pipelines.yml :
steps:
# ...
# do this after other tasks such as build
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration)'
Если вы используете помощник по задачам для добавления задачи .NET Core (DotNetCoreCLI@2
) , задайте следующие свойства:
- Команда: тест
- Путь к проектам: настройка тестовых проектов в решении
-
Аргументы:
--configuration $(BuildConfiguration)
Кроме того, можно запустить dotnet test
команду с определенным средством ведения журнала, а затем использовать PublishTestResults@2
задачу:
steps:
# ...
# do this after your tests run
- script: dotnet test <test-project> --logger trx
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testRunner: VSTest
testResultsFiles: '**/*.trx'
Сбор данных о покрытии кода
При сборке на платформе Windows можно собирать метрики покрытия кода с помощью встроенного сборщика данных покрытия. Тестовый проект должен ссылаться на Microsoft.NET.Test.SDK версии 15.8.0 или более поздней.
При использовании задачи .NET Core (DotNetCoreCLI@2
) для выполнения тестов данные покрытия автоматически публикуются на сервере. Файл *.coverage можно скачать из сводки сборки, чтобы просмотреть в Visual Studio.
Чтобы собрать покрытие кода, добавьте --collect "Code Coverage"
аргумент при добавлении тестовой задачи в конвейер.
steps:
# ...
# do this after other tasks such as build
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration) --collect "Code Coverage"'
Если вы используете помощник по задачам для добавления задачи .NET Core (DotNetCoreCLI@2
) , задайте следующие свойства:
- Команда: тест
- Путь к проектам: настройка тестовых проектов в решении
-
Аргументы:
--configuration $(BuildConfiguration) --collect "Code Coverage"
Убедитесь, что параметр "Опубликовать результаты теста" остается выбранным.
Кроме того, чтобы собрать результаты покрытия кода с помощью dotnet test
команды с определенным средством ведения журнала, а затем запустить задачу PublishTestResults@2 , используйте следующий код:
steps:
# ...
# do this after your tests run
- script: dotnet test <test-project> --logger trx --collect "Code Coverage"
- task: PublishTestResults@2
inputs:
testRunner: VSTest
testResultsFiles: '**/*.trx'
Сбор метрик покрытия кода с помощью Coverlet
При сборке на платформе Linux или macOS можно использовать обложку или аналогичное средство для сбора метрик покрытия кода.
Результаты покрытия кода можно опубликовать на сервере с помощью задачи "Результаты покрытия кода публикации" (PublishCodeCoverageResults@2). Необходимо настроить средство покрытия, чтобы создать результаты в формате покрытия Cobertura или JaCoCo.
Чтобы выполнить тесты и опубликовать покрытие кода с помощью Coverlet:
- Добавьте ссылку на пакет NuGet
coverlet.collector
. - Добавьте следующий фрагмент кода в файл azure-pipelines.yml :
- task: DotNetCoreCLI@2
displayName: 'dotnet test'
inputs:
command: 'test'
arguments: '--configuration $(buildConfiguration) --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura'
publishTestResults: true
projects: '<test project directory>'
- task: PublishCodeCoverageResults@2
displayName: 'Publish code coverage report'
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'
Упаковка и доставка кода
Чтобы упаковать и доставить выходные данные сборки, можно:
- Опубликуйте артефакты сборки в Azure Pipelines.
- Создайте пакет NuGet и опубликуйте его в веб-канале NuGet.
- Опубликуйте пакет NuGet в Azure Artifacts.
- Создайте ZIP-архив для развертывания в веб-приложении.
- Публикация символов в сервере символов Azure Artifacts или общей папке.
Вы также можете создать образ для приложения и отправить его в реестр контейнеров.
Публикация артефактов в Azure Pipelines
Чтобы опубликовать выходные данные сборки .NET в конвейере, выполните следующие действия.
- Запустите
dotnet publish --output $(Build.ArtifactStagingDirectory)
с помощью .NET CLI или добавьте задачу .NET Core (DotNetCoreCLI@2
) с помощью команды публикации . - Опубликуйте артефакт с помощью задачи "Публикация артефакта конвейера" (PublishPipelineArtifact@1). Эта задача отправляет все файлы в
$(Build.ArtifactStagingDirectory)
виде артефакта сборки.
Добавьте следующий код в файл azure-pipelines.yml :
steps:
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)'
artifactName: 'myWebsite'
Чтобы скопировать дополнительные файлы в каталог сборки перед публикацией, используйте задачу копирования файлов (CopyFile@2).
Примечание.
Входные publishWebProjects
данные в задаче .NET Core (DotNetCoreCLI@2
) заданы true
по умолчанию и публикуют все веб-проекты в репозитории. Дополнительные сведения см. в репозитории GitHub для azure-pipelines-tasks .
Чтобы опубликовать выходные данные сборки .NET в конвейере, выполните следующие задачи:
- Запустите
dotnet publish --output $(Build.ArtifactStagingDirectory)
с помощью .NET CLI или добавьте задачу .NET Core (DotNetCoreCLI@2
) с помощью команды публикации . - Опубликуйте артефакт с помощью задачи "Публикация артефакта сборки" (PublishBuildArtifacts@1).
Следующий azure-pipelines.yml код также публикует артефакты сборки в виде ZIP-файла. Задача PublishBuildArtifacts@1
отправляет все файлы в $(Build.ArtifactStagingDirectory)
виде артефакта сборки.
steps:
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: true
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
Дополнительные сведения см. в статье "Публикация и скачивание артефактов сборки".
Публикация в веб-канале NuGet
Чтобы создать пакет NuGet и опубликовать его в веб-канале NuGet, добавьте следующий фрагмент кода в файл azure-pipelines.yml :
steps:
# ...
# do this near the end of your pipeline
- script: dotnet pack /p:PackageVersion=$(version) # define the version variable elsewhere in your pipeline
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: '<NuGet service connection>'
- task: NuGetCommand@2
inputs:
command: push
nuGetFeedType: external
publishFeedCredentials: '<NuGet service connection>'
versioningScheme: byEnvVar
versionEnvVar: version
Примечание.
Задача NuGetAuthenticate@1
не поддерживает проверку подлинности ключа API NuGet. Если вы используете ключ API NuGet, используйте NuGetCommand@2
задачу с входным набором command
push
и аргументом --api-key
. Например, dotnet nuget push --api-key $(NuGetApiKey)
.
Дополнительные сведения об использовании версий и публикации пакетов NuGet см. в статье "Публикация пакетов NuGet с помощью Azure Pipelines".
Публикация пакета NuGet в Артефактах Azure
Пакеты NuGet можно опубликовать в веб-канале Артефактов Azure с помощью задачи NuGetCommand@2 . Дополнительные сведения см. в статье "Публикация пакетов NuGet с помощью Azure Pipelines".
Публикация АРХИВа ZIP-файла в веб-приложении
Чтобы создать ZIP-архив, готовый к публикации в веб-приложении, добавьте следующий фрагмент кода в azure-pipelines.yml. Выполните эту задачу после сборки приложения в большинстве случаев в конце конвейера. Например, выполните эту задачу перед развертыванием в веб-приложении Azure в Windows.
steps:
# ...
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
Чтобы опубликовать этот архив в веб-приложении, см. развертывание веб-приложений Azure.
Публикация символов
Задачу можно использовать PublishSymbols@2
для публикации символов на сервере символов Артефактов Azure или в общей папке. Дополнительные сведения см. в разделе "Публикация символов".
Например, чтобы опубликовать символы в общей папке, добавьте следующий фрагмент кода в файл azure-pipelines.yml :
- task: PublishSymbols@2
inputs:
SymbolsFolder: '$(Build.SourcesDirectory)'
SearchPattern: '**/bin/**/*.pdb'
IndexSources: true
PublishSymbols: true
SymbolServerType: 'FileShare'
SymbolsPath: '\\<server>\<shareName>'
Чтобы использовать классический редактор, добавьте источники индекса и задачу публикации символов в конвейер.
Устранение неполадок
Если проект успешно строится на локальном компьютере, но не в Azure Pipelines, изучите следующие потенциальные причины и корректирующие действия.
- Предварительные версии пакета SDK для .NET Core не устанавливаются в агенты, размещенные корпорацией Майкрософт, и развертывание новой версии пакета SDK для всех центров обработки данных Azure Pipelines может занять несколько недель. Вместо того чтобы ожидать завершения развертывания, можно использовать задачу .NET Core для установки версии пакета SDK для .NET Core, которую вы хотите установить на размещенных майкрософт агентах.
Новая версия пакета SDK для .NET Core или Visual Studio может нарушить сборку, например если она содержит более новую версию или функцию средства NuGet. Убедитесь, что версии пакета SDK для .NET Core и среда выполнения на компьютере разработки соответствуют агенту конвейера.
Скрипт командной строки можно включить
dotnet --version
в конвейер, чтобы распечатать версию пакета SDK для .NET Core. Используйте установщик средств .NET Core для развертывания той же версии агента или обновления проектов и компьютера разработки до версии конвейера пакета SDK для .NET Core.Сборки могут завершиться сбоем из-за проблем с подключением при восстановлении пакетов из NuGet.org. NuGet.org могут возникнуть проблемы или могут возникнуть проблемы с сетью между центром обработки данных Azure и NuGet.org. Вы можете изучить, можно ли использовать azure Artifacts с вышестоящими источниками для кэширования пакетов, чтобы повысить надежность сборок.
Учетные данные конвейера автоматически используются для подключения к артефактам Azure. Эти учетные данные обычно получаются от учетной записи службы сборки коллекции проектов. Дополнительные сведения об использовании артефактов Azure для кэширования пакетов NuGet см. в статье Подключение к веб-каналам артефактов Azure.
Возможно, вы используете некоторую логику в Visual Studio, которая не закодирована в конвейере. Azure Pipelines выполняет каждую команду в задаче последовательно в новом процессе. Проверьте журналы из сборки конвейеров, чтобы увидеть точные команды, которые выполнялись в сборке. Чтобы найти проблему, повторите те же команды в том же порядке на компьютере разработки.
Если у вас есть смешанное решение, включающее некоторые проекты .NET Core и некоторые проекты .NET Framework, используйте задачу NuGet для восстановления пакетов, указанных в файлахpackages.config . Добавьте задачу MSBuild или Visual Studio Build для сборки проектов на платформе .NET Framework.