【问题标题】:Build and Deploy Azure Functions App from Build Server从构建服务器构建和部署 Azure Functions 应用程序
【发布时间】:2017-09-05 04:49:17
【问题描述】:

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

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

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

【问题讨论】:

    标签: azure jenkins continuous-integration azure-web-app-service azure-functions


    【解决方案1】:

    我能够分两步完成部署。首先,使用 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 资源管理器能够访问包!

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        您可以从函数应用的配置中设置持续部署。归根结底,您想在构建服务器上利用您喜欢的任何工具“发布”您的应用程序,然后将这些资产部署为函数应用程序。

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

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

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

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

        https://jlik.me/7b

        【讨论】:

        • 感谢杰里米的回复。我对 GIT 方法的第一个问题是我的函数不在 javascript 中,甚至在 csx 中。 My Functions 项目是一个基于 Microsoft.NET.Sdk.Functions 的 .net 应用程序。因此,我克隆的 git 每个函数都包含 bin 文件夹和 function.json。因此,构建服务器可能必须在提交/推送之前先构建项目。什么是命令行?或者,如果我只提交我的 c# 代码,Azure 应用服务是否会构建我的项目?
        • 是的,您可以通过添加 .deployment 文件来指定您的部署详细信息。如果您对此有任何问题,请告诉我:github.com/projectkudu/kudu/wiki/Customizing-deployments 查找有关指定您的项目和/或解决方案的部分。
        【解决方案4】:

        msbuild 可以,更多信息请参考链接here

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

        【讨论】:

          猜你喜欢
          • 2013-02-18
          • 2023-03-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-08-07
          • 2018-04-30
          相关资源
          最近更新 更多