steps:
- task: UsePythonVersion@0
displayName: "Use Python 3.10"
inputs:
versionSpec: 3.10
- bash: |
pip install --target="./.python_packages/lib/site-packages" -r ./requirements.txt
workingDirectory: $(workingDirectory)
displayName: "Install application dependencies"
以后创建和发布档案馆,然后由AzureFunctionApp@2操作消费。 这是实现这一目标的正确方法吗? python函数文档似乎表明了要求。txt应该在构建过程中处理,但绝对不是。 我被困在哪里试图了解该步骤实际在做什么。我是正确地说它将依赖项安装到DevOps代理上的Python实例中,只是为了自己的.python_packages文件夹,后安装,将复制到被部署的工件中?是这样吗?
最重要的是,我的问题是:没有更好的方法吗? thanks!
这是实现这一目标的正确方法吗? python函数文档似乎表明了要求。txt应该在构建过程中处理,但绝对不是。 yes,需要在DevOps代理中安装需求。TXT软件包,然后将包含软件包的构建工件部署到函数应用程序中,以使函数触发器可以正常工作。即使是默认的Azure DevOps YAML代码部署Python函数也具有单独的PIP安装步骤来安装软件包。请参阅下面: -
I使用了下面的模板,然后选择了我的功能应用程序和路径设置为-
$(System.DefaultWorkingDirectory)
我的Azure Devops Yaml脚本:-
输出: - 所有包装依赖项都安装在构建步骤中,该步骤构建函数在Azure DevOps代理上,如下所示:-trigger: - master variables: azureSubscription: 'xxxxxxxxxx354dd' # Function app name functionAppName: 'siliconfunc76' # Agent VM image name vmImageName: 'ubuntu-latest' # Working Directory workingDirectory: '$(System.DefaultWorkingDirectory)' stages: - stage: Build displayName: Build stage jobs: - job: Build displayName: Build pool: vmImage: $(vmImageName) steps: - bash: | if [ -f extensions.csproj ] then dotnet build extensions.csproj --runtime ubuntu.16.04-x64 --output ./bin fi workingDirectory: $(workingDirectory) displayName: 'Build extensions' - task: UsePythonVersion@0 displayName: 'Use Python 3.10' inputs: versionSpec: 3.10 # Functions V2 supports Python 3.6 as of today - bash: | pip install --target="./.python_packages/lib/site-packages" -r ./requirements.txt workingDirectory: $(workingDirectory) displayName: 'Install application dependencies' - task: ArchiveFiles@2 displayName: 'Archive files' inputs: rootFolderOrFile: '$(workingDirectory)' includeRootFolder: false archiveType: zip archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip replaceExistingArchive: true - publish: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip artifact: drop - stage: Deploy displayName: Deploy stage dependsOn: Build condition: succeeded() jobs: - deployment: Deploy displayName: Deploy environment: 'development' pool: vmImage: $(vmImageName) strategy: runOnce: deploy: steps: - task: AzureFunctionApp@1 displayName: 'Azure functions app deploy' inputs: azureSubscription: '$(azureSubscription)' appType: functionAppLinux appName: $(functionAppName) package: '$(Pipeline.Workspace)/drop/$(Build.BuildId).zip'
those套件被存档为如下所示: -
the存档文件夹以下面的形式出版: -
above方法是现在部署函数app的理想且有效的方法。
SOthreadAnswer1进行相同。
中转介我的yaml脚本
func azure functionapp publish functionappname --python
并在同一构建步骤中使用pip install
安装了依赖项。
使用azure devops部署函数v2参考我的SO线程答案3。
deploymentMethod: 'zipDeploy'
WEBSITE_RUN_FROM_PACKAGE=0
和SCM_DO_BUILD_DURING_DEPLOYMENT=true
。如果执行此操作,则您的Python代码将在部署期间远程构建。远程构建Python代码更好,因为您会避免像