Непрерывное развертывание с использованием функций 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. Джош Карлайл подробно рассказал о том, как это сделать, в своем блоге.

Другие вопросы по тегам