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

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


person Jaja1415    schedule 17.10.2017    source источник


Ответы (4)


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

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


Главное — понять, как веб-задания распознаются хостом:

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

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

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

И это все.

person Peter    schedule 04.02.2019

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

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

Из того, что я понял, 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)

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

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

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

person Jan_V    schedule 17.10.2017

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

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

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

Дополнительные сведения: Развертывание и планирование веб-заданий Azure из VSTS в веб-приложение Azure

person starian chen-MSFT    schedule 25.10.2017

В Visual Studio, чтобы включить автоматическое развертывание веб-заданий вместе с веб-проектом, щелкните правой кнопкой мыши веб-проект в обозревателе решений, а затем выберите: Добавить > Существующий проект как веб-задание Azure и создайте веб-задание.

Дополнительные сведения можно найти в статье MS — webjobs-dotnet-deploy-vs

person Honza P.    schedule 11.02.2019
comment
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. – Из обзора - person Bsquare ℬℬ; 11.02.2019
comment
Я понял и попытался улучшить ответ. Спасибо за отзыв. - person Honza P.; 11.02.2019