Azure自托管代理运行pytest

时间:2020-10-05 16:47:56

标签: python azure azure-devops pytest

我已在本地VM上安装了自托管代理,该代理已连接到Azure,确保那里没有任何问题。 我在Azure DevOps上有一个python代码 我已经将所有Requirements.txt要求手动安装到了本地VM的cmd行中,因此安装在其上的自托管代理不必安装它们(以最大程度地减少构建和部署时间)

但是当我在YAML文件中有以下代码来运行pytest情况时,由于发生以下错误,管道失败了

这是我的Yaml文件

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator">
    <alpha
        android:duration="200"
        android:fromAlpha="0.0"
        android:toAlpha="1.0"/>
</set>

这是错误 ---------------开始:使用Python 3.8.6 ------------------------------任务:使用Python版本说明:使用工具缓存中指定的Python版本,可以选择添加转换为PATH版本:0.151.4作者:Microsoft Corporation帮助:https://docs.microsoft.com/azure/devops/pipelines/tasks/tool/use-python-version ------------------------------------------- [错误]版本规范3.8。架构x64的版本6与Agent.ToolsDirectory中的任何版本都不匹配。 C:\ CodeVersions_tool中的版本: 如果这是Microsoft托管的代理,请在https://aka.ms/hosted-agent-software处检查此映像是否支持Python的并行版本。如果这是一个自托管代理,请在https://go.microsoft.com/fwlink/?linkid=871498上了解如何配置并行Python版本。整理:使用Python 3.8.6 ---------------

3 个答案:

答案 0 :(得分:1)

此错误是指 Python 不在代理工具目录中,因此对代理不可用。

以下是使用 Python 设置工具目录的(不完整)详细信息:

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/tool/use-python-version?view=azure-devops#how-can-i-configure-a-self-hosted-agent-to-use-this-task

上述文档中的奥秘在于,它们所指的那些“工具文件”是什么?

谢天谢地,GitHub 上的 jrm346 通过源代码解决了这个问题;对于 Linux,您需要从源代码编译 Python 并重新配置目标目录:

https://github.com/microsoft/azure-pipelines-tasks/issues/10721

对于 Python 3.8:

  1. 在代理工具的目录下创建所需的文件结构:

    蟒蛇

     └── 3.8.0
         ├── x64
         └── x64.complete
    

然后按照以下说明编译 Python 3.8.6,并添加一个小内容:在第 4 步的“/configure --enable-optimizations”之后运行命令“./configure --prefix=/home/azure/_work/_tool/Python/3.8.0/x64”,替换“/home/azure/_work” /_tool' 与您的代理的工具目录位置:

https://linuxize.com/post/how-to-install-python-3-8-on-ubuntu-18-04/

答案 1 :(得分:0)

您是否遵循How can I configure a self-hosted agent to use this task?

必须将所需的Python版本添加到自托管代理的工具缓存中,以便任务使用它。通常,工具高速缓存位于代理的_work / _tool目录下,否则该路径可以被环境变量AGENT_TOOLSDIRECTORY覆盖。在该目录下,根据您的Python版本创建以下目录结构:

答案 2 :(得分:0)

包括@Krzysztof Madej的建议,您还可以尝试重新启动自托管代理服务。