java 如何从Azure DevOps中正确部署Azure Functions应用程序

d7v8vwbk  于 5个月前  发布在  Java
关注(0)|答案(2)|浏览(92)

从控制台部署java函数应用程序可以使用以下命令:./mvnw azure-functions:deploy
但是,当尝试从Azure devops部署时,函数无法工作。函数显示在函数门户上。
每个功能的状态均为“已启用”
设置与以前相同。
所以一切似乎都很正常,但当我试图唤起一个函数时。响应是500内部服务器错误。
构建工件的yaml:YAML

Copy
trigger:
- master

pool:
  vmImage: ubuntu-latest

steps:
- task: JavaToolInstaller@0
  displayName: 'JavaToolInstaller Java version 17 '
  inputs:
    versionSpec: '17'
    jdkArchitectureOption: 'x64'
    jdkSourceOption: 'PreInstalled'
- task: Maven@3
  displayName: 'Maven Build and Package'
  inputs:
    mavenPomFile: 'pom.xml'
    goals: 'clean package'
    options: '-DskipTests' # Optional, to skip tests

- task: Maven@3
  displayName: 'Azure Functions Package'
  inputs:
    mavenPomFile: 'pom.xml'
    goals: 'azure-functions:package'
    options: '' 

- task: CopyFiles@2
  displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
  inputs:
    SourceFolder: '$(system.defaultworkingdirectory)'
    Contents: '**/azure-functions/**'     
    TargetFolder: '$(build.artifactstagingdirectory)'
  condition: succeededOrFailed()

- task: ArchiveFiles@2
  displayName: 'Archive $(Build.ArtifactStagingDirectory)/target/azure-functions/f-app-v2'
  inputs:
    rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/target/azure-functions/f-app-v2'
    includeRootFolder: false

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: drop'
  inputs:
    PathtoPublish: '$(build.artifactstagingdirectory)'
  condition: succeededOrFailed()

字符串
我尝试将一个工件从Azure devops部署到Azure函数,看起来一切正常,但调用函数会返回500内部服务器错误。

i34xakig

i34xakig1#

根据您的描述,您正在Azure DevOps Pipeline Maven任务中运行./mvnw azure-functions:deploy
根据这份文件:
该工具包包含验证、编译、测试、打包、验证、安装和部署。
您需要将命令:azure-functions:deploy放在Maven任务的options字段中。
举例来说:

- task: Maven@3
  displayName: 'Maven pom.xml'
  inputs:
    mavenPomFile: 'pom.xml'
    options: 'azure-functions:package'

字符串
然后,您可以使用AzureRmWebAppDeployment@4将包部署到Azure Function。
举例来说:

- task: AzureRmWebAppDeployment@4
  displayName: 'Azure App Service Deploy: kevin1014'
  inputs:
    azureSubscription: xx
    appType: functionApp
    WebAppName: xx
    packageForLinux: '$(System.DefaultWorkingDirectory)/_123-Maven-CI/drop/1.zip'
    enableCustomDeployment: true
    DeploymentType: runFromZip

utugiqy6

utugiqy62#

Azure函数应用程序有一个部署任务:Azure Function Deployment: ARM
你必须创建一个服务连接Connect to Microsoft Azure with an ARM service connection。然后使用它通过Azure DevOps管道进行部署:

steps:
- task: AzureFunctionApp@2
  displayName: 'Azure Function App Deploy: $(YOUR_FUNCTION_APP)'
  inputs:
    connectedServiceNameARM: 'Your_Azure_Env_Deployment'
    appType: functionApp
    appName: '$(YOUR_FUNCTION_APP)'
    package: '$(System.DefaultWorkingDirectory)/_YOUR_BUILD/drop/your_function_app_folder'

字符串

相关问题