从构建服务器构建和部署 Azure Functions 应用程序

Build and Deploy Azure Functions App from Build Server

我有一个使用 C# 和 Microsoft.NET.Sdk.Function 在 Visual Studio 中开发的 Azure Functions 应用程序。

我需要从我们的 Jenkins 构建服务器构建和部署这个应用程序。推荐的方法是什么?建构?部署? Azure Functions CLI? FTP? 我无法使用源代码管理或 VSTS 部署。

一些示例脚本将不胜感激!

我分两步完成部署。首先,使用 msbuild 创建一个 zip 包:

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"

接下来,应该将包上传到 azure blob 存储(SAS 令牌等) 然后,我利用 Azure AppService 的 MSDeploy 扩展下载包并将其部署到您的 Azure Functions 服务中:

{
    "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 资源管理器能够访问包!

这是一个有趣的解决方案!我 explored the options 不久前,现在只是 FTP 并等待可移植的 Functions CLI 或使用压缩的 CLI 发布。

您可以从功能应用程序的配置中设置持续部署。在一天结束时,您希望 "publish" 您的应用程序利用构建服务器上您喜欢的任何工具,然后将这些资产部署为函数应用程序。

要设置部署,请导航到您的函数应用。

  1. 单击 "Platform Features." 您将看到一个名为 "Code Deployment" 的部分。
  2. 单击"Deployment Options",系统将提示您设置源。在这里您可以选择 GitHub、本地 git、Dropbox 等。假设您使用的是本地 git。
  3. 配置后从门户中获取 git 端点
  4. 在您的构建服务器上创建一个 git 存储库,可以是本地的,也可以是您要从中部署的任何地方。将 (3) 中的端点设置为远程。 git 文件结构应该是您发布的函数的根目录。
  5. 设置您的构建以在发布后远程推送。 Azure 将检测更改并自动更新函数应用程序。

这与其他选项类似 - 例如,如果您选择 DropBox,它将监控位置并在文件为 changed/refreshed 后更新。

这里有一篇关于此功能的完整文章:

https://jlik.me/7b

msbuild 可以,请参考 link here 了解更多信息

    msbuild AzureFuncTest.sln /t:Rebuild /p:Configuration=Debug;PublishProfile=LocalDebug;DeployOnBuild=true;VisualStudioV
ersion=15.0