Непрерывное развертывание с использованием функций github и azure в Visual Studio 2017 Preview.
Я пытаюсь установить ci / cd из github в функции azure. Я создал проект функции Azure в git " https://github.com/AmitayStrijevski/AppFunctionTest".
Я опубликовал его один раз через визуальную студию, и он работал отлично.
Затем я подключил его к github ci / cd, описанному здесь " https://docs.microsoft.com/en-us/azure/azure-functions/functions-continuous-deployment".
Когда я нажимаю на git, я вижу, что он берет мой код и "развертывает" его, но когда я смотрю на функции, моего нового кода там нет, и в журналах показывается следующее сообщение
"Найдено решение 'D:\home\site\repository\HeyArnold\HeyArnold.sln' без развертываемых проектов. Вместо этого развертывание файлов."
Я потратил больше одного дня на это, и я буду очень признателен за помощь в этом вопросе
Мне удалось использовать развертывание github при использовании пустого веб-сайта и задании той же структуры папок, созданной порталом Azure. Это все еще не решает мою проблему, поскольку я хочу использовать проект функции Azure, но я подумал, что стоит упомянуть
4 ответа
После консультации со службой поддержки Microsoft я получил два файла, которые нужно было поместить в папку.sln, и тогда будет работать git-развертывание.
Будьте в курсе меняющихся строк:: 1. Восстановите пакеты nuget:: 2. Создайте и опубликуйте с вашим решением и реальным названием проекта
.deployment
[config] command = deploy.cmd
deployment.cmd
@if "% SCM_TRACE_LEVEL%" NEQ "4" @echo off
:: ----------------------:: Скрипт развертывания KUDU:: Версия: 1.0.15:: ------------ ----------
:: Предпосылки:: -------------
:: Убедитесь, что node.js установлен там, где узел 2>nul >nul IF %ERRORLEVEL% NEQ 0 ( echo Отсутствует исполняемый файл node.js, установите файл node.js, если он уже установлен, убедитесь, что он доступен из текущей среды. Перейти к ошибке)
:: Настроить:: -----
setlocal enabledelayedexpansion
SET ARTIFACTS =% ~ dp0%.. \ артефакты
ЕСЛИ НЕ ОПРЕДЕЛЕНО DEPLOYMENT_SOURCE ( SET DEPLOYMENT_SOURCE=%~dp0%.)
ЕСЛИ НЕ ОПРЕДЕЛЕНО DEPLOYMENT_TARGET ( SET DEPLOYMENT_TARGET=%ARTIFACTS%\wwwroot)
ЕСЛИ НЕ ОПРЕДЕЛЕНО NEXT_MANIFEST_PATH ( SET NEXT_MANIFEST_PATH=%ARTIFACTS%\manifest
ЕСЛИ НЕ ОПРЕДЕЛЕНО PREVIOUS_MANIFEST_PATH ( SET PREVIOUS_MANIFEST_PATH=%ARTIFACTS%\manifest))
ЕСЛИ НЕ ОПРЕДЕЛЕНО KUDU_SYNC_CMD (:: Установить kudu sync echo Установка Kudu Sync call npm install kudusync -g --silent ЕСЛИ! ОШИБКА! NEQ 0 Перейти к ошибке
:: Локально только что запущенный "kuduSync" также будет работать SET KUDU_SYNC_CMD =% appdata% \ npm \ kuduSync.cmd)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Deployment:: ---------- Функция обработки эха Развертывание приложения с пользовательским сценарием.
:: 1. Восстановление пакетов nuget. Вызов:ExecuteCmd nuget.exe restore "%DEPLOYMENT_SOURCE%\FunctionAppVS2017_3Preview.sln" -MSBuildPath "D:\Program Files (x86)\MSBuild-15.3-preview\MSBuild\15.0\Bin" IF!ERRORLEVEL! NEQ 0 Перейти к ошибке
:: 2. Сборка и публикация вызова:ExecuteCmd "D:\Program Files (x86)\MSBuild-15.3-preview\MSBuild\15.0\Bin\MSBuild.exe" "%DEPLOYMENT_SOURCE%FunctionApp1\FunctionApp1.csproj" /p:DeployOnBuild=true /p: конфигурация = выпуск /p:publishurl="%DEPLOYMENT_TEMP%" %SCM_BUILD_ARGS% IF! ОШИБКА! NEQ 0 Перейти к ошибке
:: 3. KuduSync IF /I "%IN_PLACE_DEPLOYMENT%" NEQ "1" (вызов:ExecuteCmd "%KUDU_SYNC_CMD%" -v 50 -f "%DEPLOYMENT_TEMP%" -t "%DEPLOYMENT_TARGET%" -n%%NEXT_H " -p "%PREVIOUS_MANIFEST_PATH%" -i ".git;.hg;.deployment;deploy.cmd" IF!ERRORLEVEL! NEQ 0 Перейти к ошибке)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: goto end
:: Выполнить командную подпрограмму, которая будет отображаться при ошибке: ExecuteCmd setlocal set CMD=% * call%CMD%, если "% ERRORLEVEL%" NEQ "0" echo Failed exitCode =% ERRORLEVEL%, команда =%CMD% exit / b% ERRORLEVEL%
: error endlocal echo Произошла ошибка во время развертывания веб-сайта. call:exitSetErrorLevel вызов: exitFromFunction 2> nul
: exitSetErrorLevel exit / b 1
: exitFromFunction ()
: end endlocal echo Закончено успешно.
Проверять, выписываться <functionappname>.scm.azurewebsites.net/dev
чтобы увидеть, какие файлы фактически развернуты на wwwroot
папка.
Я взглянул на ваш проект GitHub и заметил несколько вещей: если вы используете .cs
файлы, вы должны создавать предварительно скомпилированную функцию, которую вы можете развернуть непосредственно из VS.
Однако, если вы вместо этого используете .csx
файлы и хотите иметь возможность редактировать код с портала функций, у вас правильная структура - просто удалите файлы решения и csproj, так как я считаю, что они путают инфраструктуру развертывания
Вы можете добавить .deployment
-файл в корень вашего репозитория и укажите Azure и Kudu на правильный путь проекта:
[config]
project = src/PathToYourProject
Или вы можете добавить параметры приложения в портал Azure с помощью клавиши PROJECT
и значение, указывающее на правильный путь проекта.
Я использую VSTS, а не GitHub, но вы все равно можете найти эту ссылку здесь.
Используя инструментальное расширение для функций Azure в VS2017 Preview, а также шаги сборки, описанные в этом выпуске, я смог запустить этот конвейер CI с проектом функций Azure. Джош Карлайл подробно рассказал о том, как это сделать, в своем блоге.