首页 > 解决方案 > 使用 GoLang 部署 azure 函数

问题描述

目前我正在构建一个 GoLang 无服务器 Azure 函数。我使用这个构建管道:

trigger:
- main

pool:
  vmImage: 'vs2017-win2016'
steps:
- task: GoTool@0
  inputs:
    version: '1.16.2'

- task: Go@0
  displayName: 'go get'
  inputs:
    arguments: '-d'
    workingDirectory: '$(System.DefaultWorkingDirectory)'

- task: Go@0
  displayName: 'go build'
  inputs:
    command: build
    arguments: '-o go_ibors_backend main.go'
    workingDirectory: '$(System.DefaultWorkingDirectory)'

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(Build.BinariesDirectory)'
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'

构建管道已成功运行。此外,发布管道部署成功,但是当我在 Azure 门户中查看我的函数时,没有结果。当我将函数本地推送到 Azure 时,我的所有函数都会显示出来。

发布任务: 发布任务截图

我做错了什么?

标签: azuregodeploymentazure-functionsazure-pipelines

解决方案


问题是 ArchiveFiles 指向错误的 rootFolderOrFile 并且 includeRootFolder 必须设置为 false,因为作业将在根文件夹中查找 host.json 文件。

- task: ArchiveFiles@2
  displayName: 'Create artifact'
  inputs:
    rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
    includeRootFolder: false
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    replaceExistingArchive: true

推荐阅读