在Azure中,如何在不使用git的情况下部署functionapp代码?

时间:2017-10-06 03:49:30

标签: azure azure-functions azure-deployment azure-node-sdk

我创建了一个资源管理器模板,其中包含基本上使用默认模板运行功能应用程序的资源,我可以手动将文件复制到sites\wwwroot下的文件存储中,当我卷曲功能应用程序时,它可以运行

但我想知道的是,部署一堆文件以更新实际的functionapp但不使用git的正确方法是什么。我可以看到一些如何使用git的例子,但我的问题是我希望将所有函数都放在一个repo中而不是一堆较小的repos(我想要一个monorepo)。

在Azure中,您只需将.gz文件中的代码上传到S3,然后在创建lambda时,为它提供zip的路径。然后有一个简单的API,您可以调用它来推送一个新的zip和presto。

azure中的等效API是什么,只需给它一个zip并将它解压缩到正确目录中的文件?

修改

我终于弄明白了,最重要的答案基本上是正确的,但我必须弄清楚一些额外的步骤,所以我会把这些放在这里。

卷曲的具体文件是here。我与该团队的问题主题是here

我使用的实际卷曲调用是:

$ curl -XPUT --data-binary @index.js.zip "https://abc:xyz@ugh.scm.azurewebsites.net/api/zip/site/wwwroot/hello"

注意事项:

  • 您必须使用--data-binary-d导致错误的有效负载
  • 要在bash中创建zip,我使用了:$ zip index.js.zip index.js
  • abc:xyz是部署用户名和密码
  • 正确的发送路径是site/wwwroot/hello,其中hello是该函数的名称。

您可以在azure门户网站用户界面(documented here)中设置用户名和密码,但您也可以使用azure-cli进行设置,如下所示:

$ az login
$ az webapp deployment user set --user-name abc --password xyz

这就是诀窍,一旦您设置了部署凭据,就可以在基本身份验证中使用它们来调用kudu api。

1 个答案:

答案 0 :(得分:2)

Azure中也允许使用Rest API部署功能应用程序。我们可以使用以下Rest API来做到这一点。我们可以从Kudu REST API获取更多详细信息。我们可以从发布文件中获取ftp使用和密码,关于如何发布文件,请参考另一个SO thread

PUT https://{user}:{password}@{FunctionAppname}.scm.azurewebsites.net/api/zip/{path}  # example path:site/wwwroot