Azure函数在VSTS构建期间进行转换
在VSTS构建过程中,有没有一种方法可以将类似于a的东西应用于Azure函数 我有一个Azure功能应用程序,每个部署环境(开发、测试、产品)有一个功能。这些函数几乎相同,但以下值需要根据每个特定部署进行更新: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
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脚本吗?