我在JAVA中有Azure Function项目。不幸的是,对Java的支持不是很好):-因此,所有内容都有一点“不同”。因此,您能指出我参考示例还是文档,说明如何将用Java编写的功能项目部署到Azure中?由于我想要的全部仅显示问题的一部分-且部分无法完全融合在一起)-:
不可能构建独立的程序包(ZIP)并将其部署到多个不同的环境(stages / dev / test / prod)。是吗?
当您使用CI / CD管道时,它尤其令人不适。不可能有一个BUILD管道,而要有多个DEPLOY管道。因为该构建必须基于目标部署名称进行命名(内部目录)-所以不是独立的。与每个环境具有一个构建和多个配置的基本原理背道而驰。
任何想法如何在不构建多个版本的情况下解决它?谢谢。
编辑: maven“ mvn软件包(+ azure-function:package)”准备使用目录构建
${projectRoot}/target/azure-functions/${functionResourceName}/...
其中
/...
被压缩为最终的天蓝色包,名为:$ {functionResourceName} .zip
因此,“ functionResourceName”只是ZIP文件的名称(+包含具有相同名称的jar)。但是...
...如果尝试将此ZIP部署到具有另一个名称的Azure功能资源-它将失败。
答案 0 :(得分:1)
是的。我确实确实手动准备了该程序包(使用“发布生成工件”任务。)
我想分享将Java功能包部署到Azure Function的步骤。
这是我的步骤:
在构建管道中:
/packages/native/package.json
在发布管道中:
我使用GitHub repo。 (为清楚起见,我将其转换为yaml格式)
steps:
- task: Maven@3
displayName: 'Maven pom.xml'
inputs:
mavenPomFile: '$(Parameters.mavenPOMFile)'
options: 'azure-functions:package'
- 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/kishazureappfunction'
inputs:
rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/target/azure-functions/kishazureappfunction'
includeRootFolder: false
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
condition: succeededOrFailed()
结果:
azure函数名称和程序包名称不同。但是它可以成功部署到Azure Function。