Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Используйте Azure Pipeline для автоматического создания, тестирования и развертывания проектов .NET Core. В этой статье показано, как выполнять следующие задачи:
- Настройте среду сборки с помощью локальных агентов.
- Восстановление зависимостей, сборка проекта и тестирование с помощью задачи .NET Core (DotNetCoreCLI@2) или скрипта.
- Test your code and use the publish code coverage task to publish code coverage results.
- Упакуйте и отправьте результаты сборки:
- your pipeline.
- a NuGet feed.
-
.zip
файл для развертывания веб-приложения в Azure.
- Настройте окружение сборки с управляемыми Microsoft или локальными агентами.
- Восстановление зависимостей, сборка проекта и тестирование с помощью задачи .NET Core (DotNetCoreCLI@2) или скрипта.
- Test your code and use the publish code coverage task to publish code coverage results.
- Упакуйте и отправьте результаты сборки:
- your pipeline.
- a NuGet feed.
-
.zip
файл для развертывания веб-приложения в Azure.
Примечание.
Для получения помощи с проектами на платформе .NET Framework, см. статью «Создание приложений ASP.NET с помощью платформы .NET Framework».
Предварительные условия
Продукт | Требования |
---|---|
Azure DevOps | - An Azure DevOps organization and project.
Создайте ее бесплатно. Разрешения - : — Чтобы предоставить доступ ко всем конвейерам в проекте: необходимо быть членом группы администраторов проектов. - To create service connections: You must have the Administrator or Creator role for service connections. - An ability to run pipelines on Microsoft-hosted agents. Вы можете приобрести параллельное задание или запросить уровень "Бесплатный". |
GitHub | - A GitHub account. |
Продукт | Требования |
---|---|
Azure DevOps | - An Azure DevOps collection. Разрешения - : — Чтобы предоставить доступ ко всем конвейерам в проекте: необходимо быть членом группы администраторов проектов. - To create service connections: You must have the Administrator or Creator role for service connections. |
GitHub | - A GitHub account. |
Создание первого конвейера
Вы не знакомы с Azure Pipelines? В этом случае рекомендуется сначала попробовать следующий раздел.
Создание проекта .NET.
Если у вас нет проекта .NET для работы, создайте новый проект в локальной системе. Start by installing the .NET 8.0 SDK .
Откройте окно терминала.
Создайте каталог проекта и перейдите к нему.
Создайте веб-приложение .NET 8.
dotnet new webapp -f net8.0
В том же сеансе терминала запустите приложение локально с помощью
dotnet run
команды из каталога проекта.dotnet run
Once the application starts, press Ctrl-C to shut it down.
Создание репозитория Git и его подключение к GitHub
В каталоге проекта создайте локальный репозиторий Git и зафиксируйте код приложения в главной ветви.
Создание проекта DevOps
Create a new Azure DevOps project to host your pipeline.
- В браузере перейдите к dev.azure.com и войдите в систему.
- Выберите свою организацию.
- Создайте новый проект, выбрав новый проект или создав проект при создании первого проекта в организации.
- Заполните поле Имя проекта.
- Select the Visibility for your project.
- Нажмите кнопку создания.
- В браузере перейдите на сервер Azure DevOps Server.
- Выберите коллекцию.
- Создайте новый проект, выбрав новый проект или создав проект при создании первого проекта в коллекции.
- Заполните поле Имя проекта.
- Select the Visibility for your project.
- Нажмите кнопку создания.
Настройка среды сборки
Your builds run on self-hosted agents. Убедитесь, что на агентах установлена необходимая версия пакета SDK для .NET Core и среды выполнения. You can build your .NET Core projects by using the .NET Core SDK and runtime on Windows, Linux, macOS, and Docker.
Вы можете установить определенную версию пакета SDK для .NET, добавив задачу UseDotNet@2 в файл YAML конвейера или добавив задачу в конвейер с помощью классического редактора.
Пример фрагмента КОДА YAML:
steps:
- task: UseDotNet@2
inputs:
version: '8.x'
Your builds run on Microsoft-hosted agents. Вы можете создавать проекты .NET Core с помощью пакета SDK для .NET Core и среды выполнения в Windows, Linux и macOS.
Кроме того, можно использовать локальный агент. С помощью локального агента можно использовать предварительные версии или частные пакеты SDK, которые официально не поддерживаются Azure DevOps Services и запускать добавочные сборки.
Создание конвейера
Для создания конвейера можно использовать редактор конвейера YAML или классический редактор. Чтобы использовать классический редактор, выберите "Использовать классический редактор".
Создание конвейера и выбор источника
Войдите в свою организацию Azure DevOps и откройте нужный проект.
Перейдите к конвейерам и выберите "Создать конвейер" или "Создать конвейер" при создании первого конвейера.
Выполните все шаги мастера, выбрав GitHub в качестве расположения исходного кода.
Возможно, вас перенаправят на GitHub для входа. Для этого введите учетные данные GitHub.
Когда появится список репозиториев, выберите свой.
Вы можете перенаправиться на GitHub, чтобы установить приложение Azure Pipelines. В этом случае выберите " Утвердить" и "Установить".
Настройка конвейера
Когда появится вкладка "Настройка", выберите "Показать больше" и выберите шаблон конвейера ASP.NET Core из списка.
Проверьте новый конвейер, чтобы узнать, что делает YAML.
Вы можете настроить YAML-файл для ваших требований. Например, можно указать пул агентов или добавить задачу для установки другого пакета SDK для .NET.
Save and run your pipeline
Когда будете готовы, выберите Сохранить и запустить.
По желанию, можно изменить сообщение коммита.
Зафиксируйте новый файл azure-pipelines.yml в репозиторий, нажав кнопку "Сохранить и запустить".
Чтобы просмотреть конвейер в действии, выберите задание в разделе "Задания ".
Создание и запуск конвейера
Конвейер можно создать с помощью редактора конвейера YAML или классического редактора.
- Перейдите в проект и выберите "Конвейеры".
- Выберите "Создать конвейер" или "Создать конвейер" при создании первого конвейера для этого проекта.
Выбор источника
Выберите исходный репозиторий. В этом примере используйте GitHub Enterprise Server.
- Введите URL-адрес учетной записи GitHub. Например,
https://github.com/<username>
. - Введите личный маркер доступа для учетной записи GitHub.
- Введите имя подключения службы. Например,
my-github
. - Нажмите кнопку создания.
- Введите URL-адрес учетной записи GitHub. Например,
Выберите репозиторий GitHub.
Настройка конвейера
На вкладке "Настройка" выберите "Показать больше " и выберите шаблон конвейера ASP.NET Core из списка.
Проверьте новый конвейер, чтобы узнать, что делает YAML.
Вы можете настроить YAML-файл для ваших требований. Например, можно добавить задачи для установки пакета SDK для .NET или тестирования и публикации проекта.
Save and run your pipeline
Выберите Сохранить и выполнить.
Чтобы зафиксировать новый файл azure-pipelines.yml в репозиторий, измените сообщение фиксации по мере необходимости и нажмите кнопку "Сохранить и запустить".
Чтобы просмотреть конвейер в действии, выберите задание в разделе "Задания ".
Теперь у вас есть рабочий конвейер, готовый к настройке! Узнайте подробнее о некоторых распространенных способах настройки конвейера.
Build environment
Azure Pipelines использует локальные агенты для создания проектов .NET Core. Убедитесь, что на агентах установлена необходимая версия пакета SDK для .NET Core и среды выполнения. You can build your .NET Core projects by using the .NET Core SDK and runtime on Windows, Linux, macOS, and Docker.
For example, to select a pool and agent capabilities in the pipeline YAML file:
You can select the agent pool and agent for your build job. Агенты определяются на основе их способностей.
pool:
name: myPrivateAgents
demands:
- agent.os -equals Darwin
- anotherCapability -equals somethingElse
Вы можете установить определенную версию пакета SDK для .NET, добавив задачу UseDotNet@2 в конвейер. Помните, что для агентов, работающих на физических системах, установка пакетов SDK и инструментов через ваш конвейер изменяет среду сборки на хосте агента.
Чтобы установить более новую версию SDK, установите performMultiLevelLookup
на true
в следующем фрагменте кода:
steps:
- task: UseDotNet@2
displayName: 'Install .NET Core SDK'
inputs:
version: 8.x
performMultiLevelLookup: true
includePreviewVersions: true # Required for preview versions
Azure Pipelines можно использовать для создания проектов .NET Core в Windows, Linux или macOS без необходимости настройки инфраструктуры.
For example, Ubuntu is set here in the pipeline YAML file.
pool:
vmImage: 'ubuntu-latest'
See Microsoft-hosted agents for a complete list of images and further configuration examples.
Размещенные корпорацией Майкрософт агенты в Azure Pipelines включают несколько предварительно установленных версий поддерживаемых пакетов SDK для .NET Core. Агенты, размещенные корпорацией Майкрософт, не включают некоторые из старых версий пакета SDK для .NET Core. They also don't typically include prerelease versions. Если вам нужны эти версии пакета SDK для агентов, размещенных корпорацией Майкрософт, установите их с помощью задачи UseDotNet@2 .
Например, чтобы установить пакет SDK 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
Tip
Чтобы сэкономить затраты на запуск установщика инструментов, можно настроить локальный агент Linux, macOS или Windows. You can also use self-hosted agents to save time if you have a large repository or you run incremental builds. A self-hosted agent can also help you in using the SDKs that aren't included in Azure DevOps or are only available on your corporate or on-premises environments.
Восстановить зависимости
NuGet — это популярный способ зависеть от кода, который вы не создаете. Вы можете скачать пакеты NuGet и инструменты для конкретного проекта, указанные в файле проекта, выполнив dotnet restore
команду с помощью задачи .NET Core или непосредственно в скрипте в конвейере. Дополнительные сведения см. в статье о задаче .NET Core (DotNetCoreCLI@2).
Пакеты NuGet можно скачать из Azure Artifacts, NuGet.org или какого-нибудь другого внешнего или внутреннего репозитория NuGet. Задача .NET Core особенно полезна для восстановления пакетов из аутентифицированных веб-каналов NuGet. If your feed is in the same project as your pipeline, you don't need to authenticate.
This pipeline uses an Azure Artifact feed for dotnet restore
in the DotNetCoreCLI@2 task.
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)'
Команда dotnet restore
использует NuGet.exe
, поставляемый с .NET Core SDK, и может восстанавливать только пакеты, указанные в файлах проекта .csproj
.NET Core.
Если в решении также есть проект платформы Microsoft .NET Framework или используется package.json
для указания зависимостей, используйте задачу NuGet для восстановления этих зависимостей.
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
feedsToUse: 'select'
Примечание.
Если вы используете Ubuntu 24.04 или более поздней версии, необходимо использовать задачу NuGetAuthenticate
с .NET CLI вместо задачи NuGetCommand@2
. For more information, see Support for newer Ubuntu hosted images.
В пакете SDK для .NET Core версии 2.0 и более поздних версий пакеты восстанавливаются автоматически при выполнении таких dotnet build
команд. Однако вам по-прежнему потребуется использовать задачу .NET Core для восстановления пакетов, если вы используете аутентифицированный канал.
Your builds can fail because of connection issues when you restore packages from NuGet.org. You can use Azure Artifacts with upstream sources to cache the packages. Учетные данные конвейера автоматически используются при подключении к Azure Artifacts. These credentials are typically derived from the Project Collection Build Service account. To learn more about using Azure Artifacts to cache your NuGet packages, see Connect to Azure Artifact feeds.
Чтобы указать репозиторий NuGet, поместите URL-адрес в файл NuGet.config
в вашем репозитории. Если ваш канал аутентифицирован, управляйте его учетными данными, создав подключение службы NuGet на вкладке Службы в разделе Параметры проекта.
При использовании агентов, размещенных корпорацией Майкрософт, вы получаете новый компьютер при каждом запуске сборки, который восстанавливает пакеты при каждом запуске. Восстановление может занять значительное время. Чтобы устранить проблему, можно использовать Azure Artifacts или локальный агент с преимуществом использования кэша пакетов.
For more information about NuGet service connections, see publish to NuGet feeds.
Восстановление пакетов из внешнего хранилища
Выполните следующие действия, чтобы восстановить пакеты из внешнего источника.
Вы можете добавить команду восстановления в конвейер, используя редактор конвейера YAML, прямо вставив следующий фрагмент кода в файл azure-pipelines.yml
или воспользовавшись помощником по задачам для добавления задачи .NET Core.
# do this before your build tasks
steps:
- task: DotNetCoreCLI@2
displayName: Restore
inputs:
command: restore
projects: '**/*.csproj'
feedsToUse: config
nugetConfigPath: NuGet.config # Relative to root of the repository
externalFeedCredentials: <Name of the NuGet service connection>
Replace the <placeholder> with your service connection name.
Чтобы использовать помощник по задачам, выполните следующие действия.
Чтобы добавить задачу сборки с помощью помощника по задачам, сделайте следующее:
Перейдите в положение в YAML-файле, где вы хотите вставить задачу.
Выберите .NET Core из каталога задач.
Выберите команду восстановления из раскрывающегося списка команд.
В поле "Путь к проектам" введите путь к
.csproj
файлам.Выберите Добавить.
Нажмите кнопку "Сохранить", чтобы зафиксировать изменение.
Примечание.
Make sure the custom feed is specified in your NuGet.config
file and that credentials are specified in the NuGet service connection.
Создайте свой проект
Создайте проекты .NET Core, выполнив dotnet build
команду. Вы можете добавить команду в конвейер в качестве скрипта командной строки или с помощью задачи .NET Core.
Build with the .NET Core task
Пример YAML для сборки с помощью задачи DotNetCoreCLI@2:
steps:
- task: DotNetCoreCLI@2
displayName: Build
inputs:
command: build
projects: '**/*.csproj'
arguments: '--configuration $(buildConfiguration)' # Update this to match your needs
Вы можете добавить задачу сборки с помощью редактора конвейера YAML, непосредственно изменив файл или добавив задачу .NET Core с помощью помощника по задачам.
Чтобы добавить задачу сборки с помощью помощника по задачам, сделайте следующее:
Перейдите в положение в YAML-файле, где вы хотите вставить задачу.
Выберите .NET Core из каталога задач.
Выберите команду сборки из раскрывающегося списка команд.
В поле "Путь к проектам" введите путь к
.csproj
файлам.Выберите Добавить.
Нажмите кнопку "Сохранить", чтобы зафиксировать изменение.
Build .NET Core with a command line script
YAML example to build using dotnet build
as a script:
steps:
- script: dotnet build --configuration $(buildConfiguration)
displayName: 'dotnet build $(buildConfiguration)'
Вы можете добавить задачу сборки с помощью редактора конвейера YAML, непосредственно изменив файл или добавив задачу «Командная строка».
Чтобы добавить задачу командной строки , выполните следующие действия.
Перейдите в положение в YAML-файле, где вы хотите вставить задачу.
Выберите командную строку из каталога задач.
Optionally, add a Display name.
Введите команду с параметрами
dotnet build
. Например,dotnet build --configuration $(buildConfiguration)
.Введите путь к
.csproj
файлу в качестве рабочего каталога.Выберите Добавить.
Нажмите кнопку "Сохранить", чтобы зафиксировать изменение.
Добавьте команды SDK для .NET в ваш конвейер
Команды SDK для .NET можно добавить в проект в качестве скрипта или с помощью задачи .NET Core. Задача .NET Core (DotNetCoreCLI@2) позволяет легко добавлять команды dotnet CLI в конвейер. Задачи .NET Core можно добавить, изменив файл YAML или используя классический редактор.
Add a .NET CLI command with the .NET Core task
Чтобы добавить команду CLI .NET Core с помощью редактора конвейера YAML, сделайте следующее:
Перейдите в положение в YAML-файле, где вы хотите вставить задачу.
Выберите .NET Core из каталога задач.
Выберите команду, которую вы хотите выполнить.
Настройте все необходимые параметры.
Выберите Добавить.
Нажмите кнопку "Сохранить", чтобы зафиксировать изменение.
Add a .NET Core CLI command in a script
Вы можете добавить команды CLI .NET Core как script
в ваш файл azure-pipelines.yml
.
Пример:
steps:
# ...
- script: dotnet test <test-project>
Установка инструмента
Чтобы установить глобальное средство .NET Core, например dotnetsay в сборке, работающей в Windows, сделайте следующее:
-
Добавьте задачу .NET Core и задайте следующие свойства:
-
Command: custom.
- Путь к проектам: оставьте пустым.
- Настраиваемая команда: инструмент.
-
Аргументы:
install -g dotnetsay
.
-
Command: custom.
- Чтобы запустить средство, добавьте командную строку и задайте следующие свойства:
-
Скрипт:
dotnetsay
.
-
Скрипт:
Запуск тестов
При наличии тестовых проектов в репозитории можно использовать задачу .NET Core для выполнения модульных тестов с помощью платформ тестирования, таких как MSTest, xUnit и NUnit. Тестовый проект должен ссылаться на Microsoft.NET.Test.SDK версии 15.8.0 или более поздней. Результаты теста автоматически публикуются в службе. Эти результаты доступны в сводке сборки и могут использоваться для устранения неполадок неудачных тестов и анализа времени тестирования.
Вы можете добавить тестовую задачу в конвейер с помощью задачи DotNetCoreCLI@2 или добавить следующий фрагмент кода в azure-pipelines.yml
файл:
steps:
# ...
# do this after other tasks such as building
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration)'
При использовании редактора задач .NET Core задайте команду для тестирования и пути к проектам, которые должны ссылаться на тестовые проекты в решении.
Кроме того, можно выполнить dotnet test
команду с определенным средством ведения журнала, а затем использовать задачу "Опубликовать результаты теста".
steps:
# ...
# do this after your tests have run
- script: dotnet test <test-project> --logger trx
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testRunner: VSTest
testResultsFiles: '**/*.trx'
Collect code coverage
When you're building on the Windows platform, code coverage metrics can be collected by using the built-in coverage data collector. Тестовый проект должен ссылаться на Microsoft.NET.Test.SDK версии 15.8.0 или более поздней.
При использовании задачи .NET Core для выполнения тестов данные покрытия автоматически публикуются на сервере. Файл .coverage
можно скачать из сводки сборки для просмотра в Visual Studio.
Добавьте следующий фрагмент кода в azure-pipelines.yml
файл:
steps:
# ...
# do this after other tasks such as building
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration) --collect "Code Coverage"'
Чтобы добавить задачу .NET Core через редактор задач, выполните следующие действия.
Добавьте задачу .NET Core в задание сборки и задайте следующие свойства:
- Command: test.
- Путь к проектам: должен ссылаться на тестовые проекты в решении.
-
Аргументы:
--configuration $(BuildConfiguration) --collect "Code Coverage"
.
Убедитесь, что параметр "Опубликовать результаты теста" остается выбранным.
Если вы решили выполнить dotnet test
команду, укажите параметры ведения журнала результатов теста и покрытия. Затем используйте задачу "Опубликовать результаты теста":
steps:
# ...
# do this after your tests have run
- script: dotnet test <test-project> --logger trx --collect "Code Coverage"
- task: PublishTestResults@2
inputs:
testRunner: VSTest
testResultsFiles: '**/*.trx'
Collect code coverage metrics with Coverlet
Если вы создаете проект на Linux или macOS, можно использовать Coverlet или аналогичное средство для сбора метрик покрытия кода.
You can publish code coverage results to the server with the Publish Code Coverage Results task (PublishCodeCoverageResults@2) task. Инструмент оценки покрытия необходимо настроить для генерации результатов в формате Cobertura или JaCoCo.
To run tests and publish code coverage with Coverlet, do the following tasks:
Добавьте ссылку на пакет NuGet
coverlet.collector
.Добавьте следующий фрагмент кода в
azure-pipelines.yml
файл:- task: UseDotNet@2 inputs: version: '8.x' includePreviewVersions: true # Required for preview versions - task: DotNetCoreCLI@2 displayName: 'dotnet build' inputs: command: 'build' configuration: $(buildConfiguration) - 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: 'MyTestLibrary' # update with your test project directory - task: PublishCodeCoverageResults@2 displayName: 'Publish code coverage report' inputs: codeCoverageTool: 'Cobertura' summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'
Упаковка и доставка кода
Артефакты сборки можно опубликовать следующими способами:
- Публикация в Azure Pipelines.
- Публикация пакетов в Azure Artifacts.
- Создание пакета NuGet и публикация в веб-канале NuGet.
- Создание архива .zip для развертывания веб-приложения.
Публикация артефактов в Azure Pipelines
To publish the output of your .NET build to your pipeline, do the following tasks:
- Запустите
dotnet publish --output $(Build.ArtifactStagingDirectory)
в командной строке .NET CLI или добавьте задачу DotNetCoreCLI@2 с командой publish. - Publish the artifact by using the Publish Pipeline Artifact task.
Добавьте следующий фрагмент кода в azure-pipelines.yml
файл:
steps:
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
# this code takes all the files in $(Build.ArtifactStagingDirectory) and uploads them as an artifact of your build.
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)'
artifactName: 'myWebsite'
Примечание.
Задача DotNetCoreCLI@2 имеет входные publishWebProjects
данные, которые по умолчанию имеют значение true . Эта задача публикует все веб-проекты в репозитории по умолчанию. Дополнительные сведения и справку можно найти в задаче открытый код на сайте GitHub.
Чтобы скопировать дополнительные файлы в каталог сборки перед публикацией, используйте задачу копирования файлов (CopyFile@2).
To publish the output of your .NET build to your pipeline, do the following tasks:
- Запустите
dotnet publish --output $(Build.ArtifactStagingDirectory)
через интерфейс командной строки или добавьте задачу DotNetCoreCLI@2 с параметром публикации. - Опубликуйте артефакт с помощью задачи "Публикация артефакта сборки" (PublishBuildArtifacts@1).
To publish your build artifacts as a .zip file, add the following snippet to your azure-pipelines.yml
file:
steps:
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
# this code takes all the files in $(Build.ArtifactStagingDirectory) and uploads them as an artifact of your build.
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
Дополнительные сведения см. в статье "Публикация и скачивание артефактов сборки".
Publish to a NuGet feed
Чтобы создать пакет NuGet и опубликовать его в веб-канале NuGet, добавьте следующий фрагмент кода:
steps:
# ...
# do this near the end of your pipeline in most cases
- script: dotnet pack /p:PackageVersion=$(version) # define version variable elsewhere in your pipeline
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: '<Name of the NuGet service connection>'
- task: NuGetCommand@2
inputs:
command: push
nuGetFeedType: external
publishFeedCredentials: '<Name of the NuGet service connection>'
versioningScheme: byEnvVar
versionEnvVar: version
Примечание.
Задача NuGetAuthenticate@1 не поддерживает проверку подлинности ключа API NuGet. If you're using a NuGet API key, use the NuGetCommand@2 task with the command
input set to push
with the --api-key
argument. Например, dotnet nuget push --api-key $(NuGetApiKey)
.
Дополнительные сведения о версионировании и публикации пакетов NuGet см. в статье Публикация в каналах NuGet.
Публикация пакета NuGet в Артефактах Azure
You can publish your NuGet packages to your Azure Artifacts feed by using the NuGetCommand@2 to push to your Azure Artifact feed. Например, см. статью "Публикация пакетов NuGet с помощью Azure Pipelines".
Развертывание веб-приложения
Чтобы создать архив файла .zip, готовый к публикации в веб-приложении, добавьте следующий фрагмент кода:
steps:
# ...
# do this after you've built your app, near the end of your pipeline in most cases
# for example, you do this before you deploy to an Azure web app on Windows
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
Чтобы опубликовать этот архив в веб-приложении, см. развертывание веб-приложений Azure.
Создание образа и отправка в реестр контейнеров
Вы также можете создать образ для приложения и отправить его в реестр контейнеров.
Публикация символов
Задачу PublishSymbols@2 можно использовать для публикации символов на сервере символов Azure Artifacts или общей папке.
Например, чтобы опубликовать символы в общей папке, добавьте следующий фрагмент кода в azure-pipelines.yml
файл:
- task: PublishSymbols@2
inputs:
SymbolsFolder: '$(Build.SourcesDirectory)'
SearchPattern: '**/bin/**/*.pdb'
IndexSources: true
PublishSymbols: true
SymbolServerType: 'FileShare'
SymbolsPath: '\\server\shareName'
When using the classic editor, select Index sources publish symbols from the task catalog to add to your pipeline.
Дополнительные сведения см. в разделе "Публикация символов".
Устранение неполадок
Если вы можете создать проект на компьютере разработки, но у вас возникли проблемы с его сборкой в Azure Pipelines, изучите следующие потенциальные причины и корректирующие действия:
- Предварительные версии пакета SDK для .NET Core не устанавливаются в агенты, размещенные корпорацией Майкрософт. После выпуска новой версии пакета SDK для .NET Core может потребоваться несколько недель, чтобы развернуть все центры обработки данных Azure Pipelines. You don't have to wait for this rollout to complete. Вы можете использовать задачу Use .NET Core для установки нужной версии пакета .NET Core SDK на агентах, хостируемых Microsoft.
Проверьте версии пакета SDK для .NET Core и среду выполнения на компьютере разработки и убедитесь, что они соответствуют агенту. Скрипт командной строки
dotnet --version
можно включить в конвейер, чтобы распечатать версию пакета SDK для .NET Core. Используйте установщик средств .NET Core для развертывания той же версии на агенте или обновите проекты и компьютер разработки до более новой версии пакета SDK для .NET Core.Возможно, вы используете некоторую логику в интегрированной среде разработки Visual Studio, которая не отражена в конвейере процессов. Azure Pipelines выполняет каждую из команд, указанных в задачах после другой в новом процессе. Просмотрите журналы сборки конвейеров, чтобы увидеть точные команды, которые выполнялись в процессе сборки. To locate the problem, repeat the same commands in the same order on your development machine.
Если у вас есть смешанное решение, включающее некоторые проекты .NET Core и некоторые платформа .NET Framework проекты, необходимо также использовать задачу NuGet для восстановления пакетов, указанных в
packages.config
файлах. Добавьте задачу MSBuild или Visual Studio Build для сборки проектов на платформе .NET Framework.Your builds might fail intermittently while restoring packages: either NuGet.org is having issues or there are networking problems between the Azure data center and NuGet.org. You can explore whether using Azure Artifacts with NuGet.org as an upstream source improves the reliability of your builds, as it's not in our control.
Иногда при развертывании новой версии пакета SDK для .NET Core или Visual Studio сборка может нарушиться. Например, более новая версия или функция средства NuGet, поставляемая вместе с пакетом SDK, может нарушить сборку. Чтобы изолировать эту проблему, используйте задачу установщика инструментов .NET Core, чтобы указать версию пакета SDK для .NET Core, используемого в сборке.
Вопросы и ответы
Вопрос. Где можно узнать больше о артефактах Azure?
Вопрос. Где можно узнать больше о командах .NET Core?
Ответ. Средства командной строки .NET Core
Вопрос: Где можно узнать больше о выполнении тестов в вашем решении?
Ответ. Модульное тестирование в проектах .NET Core
Вопрос. Где можно узнать больше о задачах?
Ответ. Создание и выпуск задач