it-swarm.com.ru

Как развернуть Azure WebJob как часть автоматического развертывания VSTS

Есть ли способ автоматического развертывания веб-задания Azure без необходимости щелкать правой кнопкой мыши и каждый раз выбирать «Опубликовать как веб-задание Azure»? т.е. когда я регистрирую свое решение, оно автоматически развертывается в разделе веб-задания Azure Portal.

9
Jaja1415

Да, ты можешь.

Брейди Гастер написал об этом в сообщении в блоге (сам не пробовал).

Из того, что я собираю, TL; DR; Резюме следующее:

добавьте файл с именем webjobs.props в папку свойств проекта веб-приложения или консольного приложения, которое вы публикуете

После этого отредактируйте файл так, чтобы ManagementCertificate, SubscriptionId и PublishSettingsPath были заполнены правильными данными.

Теперь вы сможете публиковать файлы с помощью команды

msbuild WebJobDemo.Web.csproj /p:DeployOnBuild=true /p:PublishProfile=WebJobDemo /p:VisualStudioVersion=12.0 /p:Password=asdfasdf

(Обратите внимание, пост написан для VS2013)

После этого вы должны увидеть что-то вроде этого .  deployment output

Конечно, вы можете автоматизировать это в VSTS (или любом другом инструменте сборки/развертывания в этом случае) всякий раз, когда что-то регистрируется в вашем хранилище.

Ответ (довольно полный) о том, как сделать это в VSTS через командную строку, можно найти в этом ответе: https://stackoverflow.com/a/45703975/352640

4
Jan_V

Вы можете сделать это через Continuous Integration Build (вызвать сборку после регистрации).

Что касается развертывания WebJob, вы можете сгенерировать пакет через Visual Studio Build с аргументом /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.stagingDirectory)".

Затем разверните его с помощью задачи развертывания приложений Azure.

Дополнительная информация: Развертывание и планирование веб-заданий Azure из VSTS в Azure Web App

3
starian chen-MSFT

Пока я пытался это сделать, я обнаружил, что на данный момент нет поддержки инструментальных средств для основных проектов dotnet. Все предлагаемые решения webjobs.props/msbuild относятся к конкретной среде dotnet.

Однако я также обнаружил, что webjob может быть чем угодно, исполняемым на локальной машине (это может быть node.js или просто пакетная команда). 


Ключ должен понять, как хосты распознают WebJobs:

  • WebJob на хосте Windows (судя по тому, как я с ним поэкспериментировал) - это просто файл run.cmd, который содержит инструкции по запуску webJob. Для ядра dotnet это будет dotnet MyDll.dll %* (%* для передачи аргументов для перенаправления вывода и т.д. С хоста). 
  • Теперь, в зависимости от того, является ли задание непрерывным или запущенным, файл run.cmd должен находиться либо в app_data/jobs/continuous/[NameOfJob], либо в app_data/jobs/triggered/[NameOfJob]. Для запускаемой работы вы также можете добавить расписание, используя файл settings.job, как описано здесь
  • Если в нужном месте есть run.cmd, он будет распознан как WebJob

Теперь для развертывания веб-задания с использованием VSTS независимо от среды выполнения выполните следующие действия:

  1. При необходимости создайте/опубликуйте свой WebJob, чтобы получить исполняемые файлы
  2. Добавьте файл run.cmd рядом с исполняемыми файлами веб-задания, который содержит соответствующие инструкции по запуску. Вы также можете добавить settings.job здесь, если это необходимо.
  3. Создайте иерархию папок app_data/jobs/[triggered/continuous]/[nameOfJob] и скопируйте свои исполняемые файлы в самую нижнюю папку. Убедитесь, что run.cmd находится непосредственно в каталоге [nameOfJob]/
  4. Заархивируйте папку app_data, чтобы Zip-пакет содержал всю иерархию
  5. Опубликуйте файл Zip с помощью обычной задачи развертывания службы приложений Azure (как развертывание веб-приложения).

И это все.

0
Peter