Развертывание нескольких заданий в Visual Studio Team Services

У меня есть решение VS с несколькими проектами, каждый из которых представляет собой независимое веб-задание, которое я размещаю в Single AppServices. Я пытаюсь автоматизировать это до непрерывного развертывания. Какая стратегия будет наилучшей для развертывания только работы в решении, которое было изменено? Есть ли способ узнать, какой проект был изменен в рамках слияния с CI? Мы используем git, и это решение находится в едином репозитории. Мы используем azure-webjobsdk для своих проектов.


person Shiju Samuel    schedule 07.12.2017    source источник
comment
Какое у вас определение сборки VSTS сейчас? Используете ли вы сейчас задачу развертывания службы приложений Azure для развертывания веб-заданий?   -  person Marina Liu    schedule 08.12.2017
comment
Сейчас у меня его нет, могу ли я развернуть несколько веб-заданий из одного решения с помощью задачи «Развертывание службы приложений».   -  person Shiju Samuel    schedule 08.12.2017
comment
Нет, вы можете развернуть только одно веб-задание с помощью задачи развертывания службы приложений. Я добавил ответ для развертывания измененного проекта веб-задания, вы можете попробовать.   -  person Marina Liu    schedule 08.12.2017
comment
сталкиваются с проблемой вроде развертывания нескольких веб-заданий с использованием отдельной задачи развертывания службы приложений, при которой заменяются все веб-задания и отображается только последнее - пожалуйста, помогите   -  person user27178    schedule 26.05.2020


Ответы (2)


Вы можете выполнить следующие шаги, чтобы развернуть единственное измененное веб-задание:

Предположим, что ваша файловая структура выглядит так:

Git root
   |___WebJob1
          |___WebJob1.sln
          |___webJob1
                 |___WebJob1.csproj
          |___WebJob2
                 |___WebJob2.csproj
          |___ …
          |___WebJobn
                 |___WebJobn.csproj

1. Добавьте переменную (например, buildporj со значением по умолчанию none) для записи измененного пакета проекта веб-задания.

2. Добавьте задачу восстановления NuGet для WebJob1/WebJob1.sln.

3. Добавьте задачу сборки Visual Studio с аргументами MSBuild:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:SkipInvalidConfigurations=true /p:PackageLocation="$(Build.BinariesDirectory)\\"

введите описание изображения здесь

4. Добавьте PowerShell Task, чтобы определить, какой проект WebJob был изменен, и скопируйте пакет с $(Build.BinariesDirectory) на $(Build.ArtifactStagingDirectory) с помощью сценария, как показано ниже:

$files=$(git diff HEAD HEAD~ --name-only)
echo "changed files: $files"
for ($i=0;$i -lt $files.Length; $i++)
{
  $file=$files[$i] -split '/'
  $files[$i]=$file[1]
}
$uni=$files | Get-Unique

$uni=@($uni | Where-Object {$_ -notmatch ".sln"})
echo "You changed the project (if more than one projects were changed, only deploy the first one): $uni"
$proj=$uni[0]+".zip"
Write-Host "##vso[task.setvariable variable=buildproj;]$proj"
Copy-Item $(Build.BinariesDirectory)\$proj $(Build.ArtifactStagingDirectory)
  1. Добавить задачу развертывания службы приложений Azure, указав для параметра "Пакет или папка" значение $(Build.ArtifactStagingDirectory)\**\$(buildproj).

введите описание изображения здесь

person Marina Liu    schedule 08.12.2017

Вы можете иметь разные проекты WebJobs (WebJob1.csproj, WebJob2.csproj) в одном решении, и вы можете развертывать их с помощью единого конвейера сборки и выпуска. Все, что вам нужно сделать, это: -

На этапе построения решения определите: -

  1. Сборка Visual Studio (решение: ***. Sln, аргументы MSBuild: / p: DeployOnBuild = true / p: WebPublishMethod = Package / p: SkipInvalidConfigurations = true / p: PackageLocation = "$ (build.artifactstagingdirectory) \")

  2. Публикация артефактов сборки (Путь к публикации: $ (build.artifactstagingdirectory); Имя артефакта: drop; Тип артефакта: Сервер)

Создайте определение выпуска для этого определения сборки и добавьте задачу

  1. Развертывание службы приложений Azure
  2. Выберите подписку Azure и название службы приложений;
  3. Выберите свой пакет или папку: $ (System.DefaultWorkingDirectory) ** \ WebJob1.zip

Вы можете аналогично создать еще одну задачу развертывания службы приложений Azure для WebJob2.zip и развернуть столько веб-заданий, сколько хотите, с помощью единого конвейера сборки и выпуска.

person DINESH BALANI    schedule 24.04.2019
comment
Развертывание нескольких заданий, заменяющих все существующие и последнее, только присутствует. помощь - person user27178; 26.05.2020