Azure自托管代理运行pytest



我在本地虚拟机上安装了一个自托管代理,它连接到azure没有问题。我在azure DevOps上有一个python代码我已经将所有requirements.txt要求手动安装到本地VM的cmd行中,这样安装在其上的自托管代理就不必安装它们(以最大限度地减少构建和部署时间(

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

这是我的Yaml文件

trigger:
- master
variables:
python.version : 3.8.6
stages:
- stage: Build
jobs: 
- job: Build
pool:
name: 'MaitQA'
#pool:
#  vmImage: 'windows-latest'   # windows-latest Or windows-2019 ; vs2017-win2016 # https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops&tabs=yaml#software # vs2017-win2016
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '$(python.version)'
displayName: 'Use Python $(python.version)'

- script: 'pip install pytest pytest-azurepipelines ; pytest unit_test/'

这是错误---------------启动:使用Python 3.8.6------------------------------任务:使用Python版本描述:使用工具缓存中指定的Python版本,可以选择将其添加到PATH版本:0.151.4作者:Microsoft Corporation帮助:https://learn.microsoft.com/azure/devops/pipelines/tasks/tool/use-python-version-------------------------------------------[error]体系结构x64的版本规范3.8.6与Agent中的任何版本都不匹配。工具目录。C:\CodeVersions_tool中的版本:如果这是Microsoft托管的代理,请检查此映像是否支持Python的并排版本https://aka.ms/hosted-agent-software.如果这是一个自托管代理,请参阅如何在https://go.microsoft.com/fwlink/?linkid=871498.精加工:使用Python3.8.6---------------

此错误表示Python不在代理工具目录中,因此代理不可用。

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

https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/tool/use-python-version?view=azure-devops#how-can-i-confige-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. 在代理工具的目录下创建所需的文件结构:

    Python

    └── 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/

您遵循了以下内容吗?如何配置自托管代理来使用此任务?

所需的Python版本必须添加到自托管代理上的工具缓存中,任务才能使用它。通常,工具缓存位于代理的_work/tool目录下,或者路径可以由环境变量AGENT_TOOLSDIRECTORY覆盖。在该目录下,根据您的Python版本创建以下目录结构:

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

最新更新