У меня есть приложение Azure Functions, разработанное в Visual Studio с использованием C # и Microsoft.NET.Sdk.Function.

Мне нужно собрать и развернуть это приложение с нашего сервера сборки Jenkins. Какой рекомендуемый подход? MSBuild ? MSDeploy ? CLI функций Azure? FTP ? Я не могу использовать Source Control или VSTS.

Некоторые примеры сценариев будут оценены!

2
Boris Lipschitz 5 Сен 2017 в 07:49

3 ответа

Лучший ответ

Мне удалось добиться развертывания в 2 этапа. Сначала создайте zip-пакет, используя msbuild:

msbuild FunctionApp.sln /p:Configuration=Release /p:DeployOnBuild=true
    /p:WebPublishMethod=Package /p:PackageAsSingleFile=true
    /p:SkipInvalidConfigurations=true
    /p:DesktopBuildPackageLocation="c:\output.zip" /p:DeployIisAppPath="Default Web Site"

Затем пакет должен быть загружен в хранилище BLOB-объектов Azure (токены SAS и т. Д.). Затем я использовал расширение MSDeploy Azure AppService, которое загружает пакет и развертывает его в службе функций Azure:

{
    "apiVersion": "2015-08-01",
    "type": "Microsoft.Web/sites",
    "name": "[variables('functionAppName')]",
    "kind": "functionapp",
    "dependsOn": [
        ...
    ],
    "properties": {...},
    "resources": [
        {
            "name": "MSDeploy",
            "type": "extensions",
            "location": "[resourceGroup().location]",
            "apiVersion": "2015-08-01",
            "dependsOn": [
                "[concat('Microsoft.Web/sites/', variables('functionAppName'))]"
            ],
            "tags": {
                "displayName": "webDeploy"
            },
            "properties": {
                "packageUri": "[concat(parameters('_artifactsLocation'), '/', parameters('webDeployPackageFolder'), '/', parameters('webDeployPackageFileName'), parameters('_artifactsLocationSasToken'))]",
                "dbType": "None",
                "connectionString": "",
                "setParameters": {
                    "IIS Web Application Name": "[variables('functionAppName')]"
                }
            }
        }
    ]
},

Убедитесь, что менеджер ресурсов Azure сможет получить доступ к пакету!

0
Boris Lipschitz 5 Сен 2017 в 07:07

Это интересное решение! Я изучил варианты a в то время как назад и пока просто FTP и ждите переносимого CLI функций или используйте публикацию CLI, которая застегивается.

0
Steve Lee 5 Сен 2017 в 08:34

С msbuild все в порядке, перейдите по ссылке здесь для получения дополнительной информации

    msbuild AzureFuncTest.sln /t:Rebuild /p:Configuration=Debug;PublishProfile=LocalDebug;DeployOnBuild=true;VisualStudioV
ersion=15.0 
0
Carlos Liu 24 Июл 2018 в 07:42