我已经创建了一个运行在应用服务计划 Y1 上的 Azure Function App (Linux),并且我的源代码在 Azure DevOps Git 中。这些函数是在 DOTNET 6 上用 C# 编写的。
您可以在下面看到我对 CI 和单独的 CD 管道的 YAML 定义。当我执行管道时,一切正常(都是绿色的)。然而,在部署之后,这是我的 Azure 门户在
Functions
刀片中的样子:
使用 VS Code Azure 扩展并查看我得到的函数应用程序的文件:
当我查看 CI 管道的工件时,一切看起来都很好(下载的 zip 的资源管理器视图):
bin
-文件夹填充在那里。
一些要点:
那么在 VS 代码中搜索时得到 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()
光盘 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'
更新
我决定重新部署我的功能,可以再次直接使用 VS Code 进行部署。使用 Azure DevOps Pipeline 仍然给我一个绿色的复选标记,但在门户中看不到函数触发器。