У меня есть приложение-функция Python, которое работает должным образом локально и при развертывании через VS Code.
Проблема возникает при развертывании. приложение-функцию в группу ресурсов продукта (и приложение-функцию).
Различия между двумя развертываниями:
- функция dev приложение (бессерверное), не интегрированное в виртуальную сеть, развертывается с помощью щелчка правой кнопкой мыши>развернуть в функциональном приложении
- приложение-функцию продукта (план Премиум), интегрировано в виртуальную сеть, развертывается через конвейер Azure DevOps, выглядит так итак:
Код: Выделить всё
trigger:
- none
variables:
# Azure Resource Manager connection created during pipeline creation
azureServiceConnectionId: '******'
# Web app name
webAppName: '*******'
# Agent VM image name
vmImageName: 'ubuntu-latest'
# Environment name
environmentName: 'PROD'
# Project root folder. Point to the folder containing manage.py file.
projectRoot: $(System.DefaultWorkingDirectory)
# Resource group
resourceGroupName : '********'
# Python version: 3.11
pythonVersion: '3.11'
stages:
- stage: Build
displayName: Build stage
jobs:
- job: BuildJob
pool: Default
steps:
- script: |
pip install --target="./.python_packages/lib/site-packages" -r ./requirements.txt
workingDirectory: $(projectRoot)
displayName: "Install requirements"
- task: ArchiveFiles@2
displayName: 'Archive files'
inputs:
rootFolderOrFile: '$(projectRoot)'
includeRootFolder: false
archiveType: zip
archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
replaceExistingArchive: true
- upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
displayName: 'Upload package'
artifact: drop
- stage: Deploy
displayName: 'Deploy Web App'
dependsOn: Build
condition: succeeded()
jobs:
- deployment: DeploymentJob
pool: Default
environment: $(environmentName)
strategy:
runOnce:
deploy:
steps:
- task: AzureFunctionApp@2
displayName: 'Deploy Azure Web App'
inputs:
connectedServiceNameARM: '$(azureServiceConnectionId)'
appType: 'functionAppLinux'
appName: '$(webAppName)'
package: '$(Pipeline.Workspace)/drop/$(Build.BuildId).zip'
runtimeStack: 'PYTHON|3.11'
appSettings: '-KeyvaultURL ***** -StorageaccountURL *****'
deploymentMethod: 'auto'
С помощью журнал, я вижу, что выбрана правильная папка:
Код: Выделить всё
/home/site/wwwroot/.python_packages/lib/site-packages/pandas/
[img]https:/ /i.sstatic.net/vtpp0So7.png[/img]
По какой-то причине function_app.py не видит установленные модули, что вызывает цепную реакцию, приводящую к неработоспособности функций. отображается даже после успешного развертывания.
Что я пробовал до сих пор:
- Несколько комбинаций использования ENABLE_ORYX_BUILD и SCM_DO_BUILD_DURING_DEPLOYMENT в стадии разработки.
- Тип развертывания — zipDeploy и/или пакет.
Подробнее здесь: https://stackoverflow.com/questions/786 ... zure-devop