gpt4 book ai didi

c# - .NET 7 中的 Azure Functions(独立)发布到 Azure,加载了 0 个函数

转载 作者:行者123 更新时间:2023-12-02 22:57:56 25 4
gpt4 key购买 nike

我正在尝试使用 GitHub Actions 工作流程将带有 .NET 7 的 Azure Function(隔离)部署到 MS Azure。一切似乎运行良好,但由于某种原因,当我将其部署到云时,该功能未加载。当我运行本地主机功能时,一切都很好(在我的机器上工作),但部署后就不行了。

public class DemoFunction
{
private readonly ILogger _logger;

public DemoFunction(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger<DemoFunction>();
}

[Function("DemoFunction")]
public HttpResponseData Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestData req)
{
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
response.WriteString("Demo function works!");

return response;
}
}

函数应用程序仅包含一个具有 HTTP 绑定(bind)的函数(无需身份验证,允许匿名请求)。我使用 Bicep 部署基础设施,使用 GH Actions 部署 Function App。日志分析显示了这一点: enter image description here

因此,由于某种原因,它确实找到了该函数,但没有加载它。如果我导航到 Azure 门户中的“功能”边栏选项卡,我看不到任何功能。该项目只是一个 POC 项目,公开托管于 https://github.com/nikneem/function-deployment-with-gh-actions

有什么想法吗?

最佳答案

哇哦,我在部署过程中找到了答案。在我的 GitHub Actions 工作流程中,我将 Azure Functions 项目进行了 dotnet 发布 到输出文件夹。我压缩了输出文件夹的内容并将该 zip 文件作为工作流程工件发布。

然后在部署中,我下载了工作流工件(例如该 zip 文件)并使用该 zip 文件进行了 Zip 部署。

现在显然,这个 zip 文件出了问题,所以我删除了手动 zip 操作,主要是因为我发现 GitHub Action 中的部署步骤在您传递包含所有已发布文件的文件夹时也有效。

因此,我的 GH Actions 工作流程中的发布步骤现在如下所示:

publish-functions:
runs-on: ubuntu-latest
needs: versionize
steps:
- uses: actions/checkout@v3
- uses: actions/setup-dotnet@v3
with:
dotnet-version: "7.0.x"
- name: Restore packages
working-directory: src
run: dotnet restore
- name: Publish functions app
working-directory: src
run: dotnet publish $FUNCTIONS_PATH/$FUNCTIONS_PROJECT -c Release --no-restore -o functionsout /p:Version=${{needs.versionize.outputs.semver}}
- name: Upload functions artifact
uses: actions/upload-artifact@v3
with:
name: player-functions
path: src/functionsout/*

部署步骤如下所示:

deploy-function-app:
runs-on: ubuntu-latest
needs: [publish-functions, deploy-infrastructure-prod]
steps:
- uses: actions/download-artifact@v3
with:
name: player-functions
path: function
- uses: azure/login@v1
with:
creds: ${{secrets.AZURE_PROD}}
- name: Deploy Azure Functions app
uses: Azure/functions-action@v1
with:
app-name: ${{needs.deploy-infrastructure-prod.outputs.functionResourceName}}
package: function

查看部署过程生成的日志,它仍然会创建一个 zip 文件并部署它。但这是一个与我手动创建的不同的 zip 文件。现在一切正常;)

关于c# - .NET 7 中的 Azure Functions(独立)发布到 Azure,加载了 0 个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74781773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com