【问题标题】:Azure functions github deployment from subfolder子文件夹中的 Azure 函数 github 部署
【发布时间】:2016-11-10 09:13:05
【问题描述】:

我在 GitHub 部署中使用 Azure 函数。我想将函数放在 repo 中的 src/server/functionName/ 中,但只有将函数直接放在 functionName/ 中时,部署才有效

如何部署放置在子目录中的函数?

documentation 状态

您的 host.json 文件和函数文件夹应直接位于您部署的根目录。

但“应该”并不意味着“必须”,对吧?

我尝试了什么:

  • host.json 和 function.json 位置的各种组合
  • host.json 中我设置了routePrefix,但它似乎只影响函数的URL:"http": { "routePrefix": "src/server" },

【问题讨论】:

  • 就我而言,我创建了一个单独的分支来解决这个问题。我无法找到任何方法将它们放在其他任何地方
  • 仅供参考 - routePrefix 设置不是指文件路径,而是指 http 路由。仅当您想自定义/更改默认 /api 路由时才使用它。

标签: azure azure-functions


【解决方案1】:

您可以通过多种方式自定义部署过程。一种方法是将自定义部署脚本添加到您的存储库根目录。当存在.deployment 脚本时,Azure 将运行该脚本作为部署过程的一部分,详见here。例如。您可以编写一个简单的脚本,将子目录\src\server 中的文件和目录复制到根目录,例如:

@echo off
echo Deploying Functions ...
xcopy "%DEPLOYMENT_SOURCE%\src\server" %DEPLOYMENT_TARGET% /Y /S

如果您不想将 .deployment 文件提交到您的 repo 并且您的要求相对简单,您也可以通过应用设置通过添加 PROJECT 应用设置 到您的函数应用程序,其值为您的子目录,例如src\server.

【讨论】:

  • 部署脚本方法有效!我正在编辑帖子以添加 /S 开关。这会复制目录,让您一次复制多个函数。
【解决方案2】:

尝试在.github/workflows/<something>.yml 中设置AZURE-FUNCTIONAPP_PACKAGE_PATH 变量:

env:
  AZURE_FUNCTIONAPP_PACKAGE_PATH: 'azure/api' # set this to the path of your web app project, defaults to the repository root
  DOTNET_VERSION: '3.1.301'  # set this to the dotnet version to use

【讨论】:

  • @Tomerikoo 感谢您的反馈!我相应地编辑了我的答案。
猜你喜欢
  • 2020-02-08
  • 2018-02-09
  • 1970-01-01
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多