Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure函数在VSTS构建期间进行转换_Azure_Azure Devops_Azure Functions_Azure Pipelines - Fatal编程技术网

Azure函数在VSTS构建期间进行转换

Azure函数在VSTS构建期间进行转换,azure,azure-devops,azure-functions,azure-pipelines,Azure,Azure Devops,Azure Functions,Azure Pipelines,在VSTS构建过程中,有没有一种方法可以将类似于a的东西应用于Azure函数 我有一个Azure功能应用程序,每个部署环境(开发、测试、产品)有一个功能。这些函数几乎相同,但以下值需要根据每个特定部署进行更新: 函数名 集成服务总线队列名称 用于日志记录的TraceWriter前缀 这些值的代码大纲,请注意“Dev”前缀: public static class DevFunction { [FunctionName("DevFunction")] public static a

在VSTS构建过程中,有没有一种方法可以将类似于a的东西应用于Azure函数

我有一个Azure功能应用程序,每个部署环境(开发、测试、产品)有一个功能。这些函数几乎相同,但以下值需要根据每个特定部署进行更新:

  • 函数名
  • 集成服务总线队列名称
  • 用于日志记录的TraceWriter前缀
  • 这些值的代码大纲,请注意“Dev”前缀:

    public static class DevFunction {
        [FunctionName("DevFunction")]
        public static async Task<HttpResponseMessage> Run(
            [HttpTrigger(...)] HttpRequestMessage request,
            [ServiceBus("devQueueName", ...] ICollector<string> outputBus,
            TraceWriter log)
        {
            log.Info("Starting DevFunction");
            ... // Do work
        }
    }
    
    公共静态类DevFunction{
    [函数名(“DevFunction”)]
    公共静态异步任务运行(
    [HttpTrigger(…)]HttpRequestMessage请求,
    [ServiceBus(“devQueueName,…]i采集器输出总线,
    TraceWriter日志)
    {
    log.Info(“启动DevFunction”);
    …干活儿
    }
    }
    

    我想将这些功能整合到一个单独的功能中,并使用类似于VSTS文件转换的功能,在为给定部署构建过程中更新上面列出的信息。我目前有三个单独的VS项目,每个项目都有自己的功能部署到每个单独的环境中。是否有更好的选项re?

    没有内置任务可以完成,但是有一些扩展可以更新JSON文件,例如,您也可以进行编程(例如PowerShell)

    目前,Azure函数不支持标准配置/设置转换。但是,对于每个部署环境转换函数,有多种变通方法:

    0.未来解决方案 理想情况下,Azure将为函数添加对标准web.config等效项的支持。由此:

    [2017年6月19日]…对于函数而言,目前还没有与web.config文件相当的文件。 我们计划将此作为移植到.NETCore工作的一部分来解决

    1.预处理器指令 在我的场景中,使用是最简单的解决方案。每个构建配置对应一个部署。例如:

    #if RELEASE
            [FunctionName("ReleaseFunction")]
    #elif AZURETEST
            [FunctionName("TestFunction")]
    #else
            [FunctionName("DevFunction")]
    #endif
    
    构建配置是在我的每个VSTS构建的“构建解决方案”步骤中指定的。显然,这段代码相当难看,根据需要的转换数量,可能很难维护

    2.读取自定义设置文件 同样,可以在功能应用程序的根目录下创建自定义设置文件,然后根据需要读取:

    var settingsPath = Path.Combine(executionContext.FunctionAppDirectory, "settings.json");
    dynamic settings = JsonConvert.DeserializeObject(File.ReadAllText(settingsPath));
    var myConfigValue = (string)settings.Values.MyConfigValue;
    
    请注意,这不适用于转换
    FunctionName
    ,而转换输入/输出绑定(如原始问题中的ServiceBus绑定)可能需要这样做

    3.PowerShell文本替换 编写对函数文件执行原始文本转换的PowerShell脚本。添加在生成解决方案之前运行脚本的VSTS生成步骤。可以在函数应用程序的全局应用程序设置中定义转换所需的任何值

    4.手臂模板 同样,从中可以使用ARM模板来完成此操作

    [2017年8月10日]我的CI/CD设置使用ARM模板部署具有以下功能的应用程序: 适当的应用程序设置。这些ARM模板位于源代码管理中 并已连接CD,因此当我需要添加新的应用程序设置时,我只需 将更改提交到ARM模板


    仅使用应用程序设置如何?是否有方法使用应用程序设置转换函数?您可以配置(例如)队列名称或前缀,然后在名称下部署要澄清的是,您指的是函数应用程序设置,对吗?如果我为(例如)队列名称定义应用程序设置,我如何实际更改该函数的值VSTS生成步骤中的t设置?功能应用程序没有web.config。您可以使用ARM模板任务或powershell脚本吗?