通过 Azure DevOps 成功进行 CI/CD 后,Azure FunctionApp 没有功能

Ale*_*idt 5 azure azure-devops azure-functions azure-pipelines

我创建了一个在应用服务计划 Y1 上运行的 Azure Function App (Linux),并将我的源代码存储在 Azure DevOps Git 中。这些函数是在 DOTNET 6 上用 C# 编写的。

您可以在下面看到我对 CI 和单独的 CD 管道的 YAML 定义。当我执行管道时,一切正常(均为绿色)。然而,部署后,我的 Azure 门户在刀片中的外观如下Functions

Azure 门户

使用 VS Code Azure 扩展并查看函数应用程序的文件,我得到:

404 为垃圾箱

当我查看 CI 管道的工件时,一切看起来都很好(下载的 zip 的资源管理器视图):

邮政编码内容

-文件bin夹被填充在那里。

一些关键点:

  • 我的功能应用程序中没有插槽。
  • 部署在关联的 App Insights 中可见。
  • 我的参考点是Microsoft Learn

那么在 VS Code 中搜索时出现 404 是否正常,有人经历过类似的事情甚至知道解决方案吗?

边注:

我曾经使用安装了扩展的 VS Code 来部署我的函数。今天,我在部署后收到一条奇怪的错误消息:

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()
Run Code Online (Sandbox Code Playgroud)

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'
Run Code Online (Sandbox Code Playgroud)

更新

我决定重新部署我的函数,并且从 Y1 切换到 S1 时可以再次直接使用 VS Code 进行部署。使用 Azure DevOps Pipeline 仍然会显示绿色复选标记,但门户中看不到任何功能触发器。切换回 Y1 会使 VS Code 中的错误再次出现。

Sha*_*der 0

您能检查一下您在文件系统上到底看到了什么吗?您可以使用控制台或高级工具:

在此输入图像描述