#python #azure #azure-devops #pytest
#python #azure #azure-devops #pytest
Вопрос:
Я установил автономный агент на своей локальной виртуальной машине, он подключен к Azure, никаких проблем нет. У меня есть код python для Azure DevOps, я установил все requirements.txt требования вручную в строку cmd локальной виртуальной машины, чтобы установленный на ней автономный агент не должен был их устанавливать (чтобы минимизировать время сборки и развертывания)
Но когда у меня есть приведенный ниже код в файле YAML для запуска конвейера pytest cases, происходит сбой из-за ошибки ниже
Это мой файл 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-devopsamp;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 из кэша инструментов, при необходимости добавляя ее в ПУТЬ Версия: 0.151.4 Автор : корпорация Microsoft Справка : https://learn.microsoft.com/azure/devops/pipelines/tasks/tool/use-python-version
——————————————- [ошибка] Спецификация версии 3.8.6 для архитектуры x64 не соответствует ни одной версии агента.Каталог инструментов. Версии в C:CodeVersions_tool:
Если это агент, размещенный в Microsoft, убедитесь, что этот образ поддерживает параллельные версии Python на https://aka.ms/hosted-agent-software . Если это автономный агент, см. раздел Настройка параллельных версий Python на https://go.microsoft.com/fwlink/?linkid=871498 . Завершение: используйте Python
3.8.6
—————
Комментарии:
1. Удалось ли вам перейти по указанной ниже ссылке?
2. Вы проверили наши ответы? Как продвигается ваша проблема? Это решаемая проблема?
Ответ №1:
Эта ошибка связана с тем, что Python отсутствует в каталоге инструментов агента и, следовательно, недоступен для агента.
Вот (неполные) сведения о настройке каталога инструментов с помощью Python:
Загадка в приведенной выше документации заключается в том, что это за «tool_files», на которые они ссылаются?
К счастью, jrm346 на GitHub просмотрел исходный код, чтобы разобраться с ним; для Linux вам нужно скомпилировать Python из исходного кода и перенастроить целевой каталог:
https://github.com/microsoft/azure-pipelines-tasks/issues/10721
Для Python 3.8:
-
Создайте необходимую файловую структуру в каталоге инструмента агента:
Python
└── 3.8.0 ├── x64 └── x64.complete
Затем скомпилируйте Python 3.8.6, следуя приведенным ниже инструкциям, с одним небольшим дополнением: сразу после « /configure --enable-optimizations
шага 4 запустите команду « ./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. Вы хотите сказать, что единственный способ сделать это — установить двоичный файл python вручную? Возможно ли создать smblink из tool_files/3.8.0 /x64/ python —> python3 (фактическая установка python)? Я пытался, но не сработало. Почему у Microsoft это сложно? Разве это не должно быть проще?
2. Я не пробовал подход smblink, хорошая идея. Я нашел так мало документации по этому вопросу, и страницы справки Microsoft были бесполезны, поэтому я не уверен в каком-либо другом способе сделать это. Хотя это звучит сложно для компиляции Python из исходного кода, с несколькими приведенными выше командами у меня, по крайней мере, не было проблем, и все это работало, хотя, да, когда я прочитал, что мне нужно скомпилировать Python из исходного кода, я немного нервничал!
Ответ №2:
Вы следили за тем, как я могу настроить автономный агент для использования этой задачи?
Желаемая версия Python должна быть добавлена в кэш инструментов автономного агента, чтобы задача могла ее использовать. Обычно кэш инструмента находится в каталоге _work / _tool агента, или путь может быть переопределен переменной среды
AGENT_TOOLSDIRECTORY
. В этом каталоге создайте следующую структуру каталогов на основе вашей версии Python:
Ответ №3:
Учитывая предложение @Krzysztof Madej, вы также можете попытаться перезапустить службу автономного агента.