我在.Net 7运行时上有一个Azure函数项目,我已经将其配置为在dotnet-isolated
模式下运行。当我通过Visual Studio发布它时,它在本地成功运行,使用Azurite作为模拟存储。
问题是,当我通过我的Gitlab/Octopus CI/CD管道部署时,该函数不会显示在门户中Function App的“Functions”选项卡中,并且Azure运行时似乎无法“看到”由我的构建过程创建的隔离的.exe,并且它不会运行该函数。
有关上下文:我在一个自托管的Gitlab示例上使用基于Kubernetes的运行器。这用于项目生成。我已经将容器设置为拉取mcr.microsoft.com/dotnet/sdk:7.0
映像,这应该是构建Function App所需的唯一依赖项。
最终,管道被配置为运行dotnet命令以生成构建:
- dotnet restore --force --no-cache
- dotnet build --configuration Release
字符串
然后将构建打包并发送到Octopus deploy进行部署。我还没有发现dotnet publish
可以生成Azure Function Apps可以运行的工作应用程序,所以我省略了它。
到目前为止,这个管道一直在使用非隔离的Function应用程序和基于Windows的运行器,但是关于dotnet隔离的Function应用程序和基于Linux的运行器的一些东西在运行时会导致问题。
我还注意到,如果不将--runtime
参数设置为win
,运行程序只生成面向Linux的应用程序。生成中不存在.exe文件。
托管环境是EP 1层Windows Azure应用程序功能。
下面是Function项目的项目文件
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
<ImplicitUsings>enable</ImplicitUsings>
<OutputType>Exe</OutputType>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.16.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues" Version="5.1.2" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Timer" Version="4.2.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.11.0" />
<PackageReference Include="OpenAI" Version="1.7.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Core.Jobs\Core.Jobs.csproj" />
<ProjectReference Include="..\Core\Core.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
<None Update="nrdiag.exe">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="nrdiag_arm64.exe">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="nrdiag_x64.exe">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
型
配置文件中的FUNCTIONS_WORKER_RUNTIME设置:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
},
"ConnectionStrings": {
}
型
}
1条答案
按热度按时间flvlnr441#
我试着在Gitlab管道中使用zip命令,用另一种方法部署Function,如下所示:
x1c 0d1x的数据
字符串
你可以直接使用下面的yml脚本中的命令来代替
func azure function-app-name
publish命令:型
此外,请确保在功能配置中添加了以下设置:-
的
的
参考号:-
.gitlab-ci.yml · main · Wai Lin / gitlab-ci-Azure-Function · GitLab
Gitlab CI script to deploy a Azure Function - DEV Community的