我创建了一个运行在 App Service Plan Y1 上的 Azure Function 应用程序(Linux),并将我的源代码存储在 Azure DevOps Git 中。这些函数是使用 DOTNET 6 中的 C# 编写的。
下面您可以看到我的 YAML 定义,用于 CI 和分离的 CD 管道。当我执行管道时,一切都正常工作(两者都是绿色的)。然而,在部署之后,这是我的 Azure 门户中“Functions”选项卡的样子: 使用VS Code Azure扩展并查看函数应用程序的文件,我得到了以下内容:
下面您可以看到我的 YAML 定义,用于 CI 和分离的 CD 管道。当我执行管道时,一切都正常工作(两者都是绿色的)。然而,在部署之后,这是我的 Azure 门户中“Functions”选项卡的样子: 使用VS Code Azure扩展并查看函数应用程序的文件,我得到了以下内容:
当我查看CI流水线的构件时,一切看起来都很好(下载的zip文件的资源管理器视图):
bin
文件夹在那里被填充。
一些关键点:
- 函数应用程序中没有插槽。
- 部署在相关的应用洞察中可见。
- 我的参考点是Microsoft Learn。
因此,在 VS Code 中搜索时出现404错误是否正常?有人遇到过类似的问题或者知道解决方案吗?
附注:
我曾经使用安装扩展的VS Code部署我的函数。今天,我在部署后收到了一个奇怪的错误消息:
CI YAML
pool:
vmImage: 'ubuntu-latest'
trigger: none
variables:
- name: 'Solution'
value: '**/MyProject.sln'
- name: 'ProjectFilter'
value: '**/*.csproj'
- name: 'BuildConfiguration'
value: 'Release'
steps:
- task: UseDotNet@2
displayName: Use DotNet 6
inputs:
version: '6.0.x'
- task: DotNetCoreCLI@2
displayName: Restore
inputs:
command: restore
projects: '$(ProjectFilter)'
- task: DotNetCoreCLI@2
displayName: Build
inputs:
projects: '$(ProjectFilter)'
arguments: '--no-restore --configuration $(BuildConfiguration)'
- task: DotNetCoreCLI@2
displayName: Publish Image Converter
inputs:
command: publish
projects: src/Functions/**/MyProject.csproj
publishWebProjects: false
arguments: '--no-restore --no-build --configuration $(BuildConfiguration) --output $(Build.DefaultWorkingDirectory)/function_publish_output'
zipAfterPublish: false
- task: ArchiveFiles@2
displayName: Archive Image Converter
inputs:
rootFolderOrFile: '$(Build.DefaultWorkingDirectory)/function_publish_output'
includeRootFolder: false
archiveFile: '$(Build.ArtifactStagingDirectory)/MyProject.zip'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
condition: succeededOrFailed()
CD YAML
variables:
- name: 'vmImageName'
value: 'ubuntu-latest'
- name: 'serviceConnectionName'
value: 'MYCONN'
- name: 'project'
value: 'MYPROJECT'
resources:
pipelines:
- pipeline: ci
source: 'NAMEOFCI'
trigger: true
pool:
vmImage: $(vmImageName)
trigger: none
stages:
- stage: Production
displayName: Production
jobs:
- deployment: Deploy
displayName: 'Deploy'
environment: 'Production'
pool:
vmImage: $(vmImageName)
strategy:
runOnce:
deploy:
steps:
- download: ci
displayName: 'Download Artifact'
artifact: drop
- task: AzureFunctionApp@1
displayName: 'Deploy Image Converter Function'
inputs:
azureSubscription: '$(serviceConnectionName)'
appType: functionAppLinux
appName: 'fapp-**********-prod'
package: '$(Pipeline.Workspace)/ci/drop/MyProject.zip'
runtimeStack: 'DOTNET|6.0'
更新
我决定重新部署我的函数,并在从Y1切换到S1时再次使用VS Code进行部署。在Azure DevOps Pipeline中仍然会显示绿色的勾号,但在门户中没有看到任何函数触发器。切换回Y1会导致VS Code中的错误再次出现。