0

介绍

我的场景是我想跨多个项目重用 Azure DevOps 中的存储库中的共享代码。我已经构建了一个管道,该管道将 awheel作为工件生成,因此我可以将其下载到其他管道。

情况

目前我已经成功设置了一个部署 Python Function App 的管道。该应用程序运行良好且稳定。我使用SCM_DO_BUILD_DURING_DEPLOYMENT=1and ENABLE_ORYX_BUILD=1来实现这一点。

我现在处于想要使用介绍中提到的工件(Python/pip 轮)的位置。我在管道中添加了一个步骤,并且能够成功下载工件。下一步是确保在我的Python Function App Zip Deployment. 这就是我坚持的地方。

我的 zip 的结构如下所示:

__app__
 | - MyFirstFunction
 | | - __init__.py
 | | - function.json
 | | - example.py
 | - MySecondFunction
 | | - __init__.py
 | | - function.json
 | - wheels
 | | - my_wheel-20201014.10-py3-none-any.whl                            <<< this is my wheel
 | - host.json
 | - requirements.txt 

问题

我尝试添加命令,例如POST_BUILD_COMMANDPRE_BUILD_COMMAND让 pip install the wheel,但是当我使用命令时,似乎找不到包(由 Oryx/Kudu 找到): -POST_BUILD_COMMAND "python -m pip install --find-links=home/site/wwwroot/wheels my_wheel" Azure DevOps 不会引发任何异常或错误消息。就在我执行该函数时,我得到一个异常说: Failure Exception: ModuleNotFoundError: No module named 'my_wheel'.

我的问题是如何更改我的解决方案以确保构建能够正确安装 my_wheel。

旁注:不幸的是,我无法使用 Azure DevOps 的 Artifacts 源来发布 my_wheel 并让 pip 使用该源。

4

2 回答 2

0

这是我的自定义滚轮在本地 VS 代码中的工作方式: 在此处输入图像描述

导航到您的 DevOps,编辑管道YAML文件,添加一个 python 脚本来指定要安装的轮文件:

pip install my_wheel-20201014.10-py3-none-any.whl

像这样:

在此处输入图像描述

启用App service Log并导航到Log Stream以查看它是否适用于 Azure:

在此处输入图像描述

于 2021-01-06T08:19:43.820 回答
0

我通过检查共享代码的存储库并将共享代码包含在函数应用程序包中解决了我的问题。

此外,我将任务替换为任务AzureFunctionApp@1AzureCLI@2并使用命令部署函数应用程序az functionapp deployment source config-zipAzureAppServiceSettings@1我通过管道中的单独步骤设置应用程序设置。

AzureCLI@2: AzureCLI@2 任务

这不是我想要解决这个问题的确切方法,因为我仍然必须在根目录中包含共享代码的要求requirements.txt

将任务切换AzureFunctionApp@1到 可以AzureCLI@2让我在管道中获得更多反馈。结果应该是一样的。

于 2021-01-22T08:39:40.157 回答