gpt4 book ai didi

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

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

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

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

Azure Portal

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

404 for bin

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

ZIP Content

bin 文件夹已填充到此处。

一些要点:

  • 我的函数应用中没有插槽。
  • 部署在关联的 App Insights 中可见。
  • 我的引用点是Microsoft Learn

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

旁注:

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

Telemetry error in 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 中出现错误。

最佳答案

我们遇到了类似的问题,必须向应用设置添加一个参数。在我们的例子中直接通过 terraform。

app_settings = {
WEBSITE_RUN_FROM_PACKAGE = "1"
}

干杯

关于通过 Azure DevOps 成功进行 CI/CD 后,Azure FunctionApp 没有功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75488247/

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