Автономный агент Azure для запуска pytest

#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:

https://learn.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

Загадка в приведенной выше документации заключается в том, что это за «tool_files», на которые они ссылаются?

К счастью, jrm346 на GitHub просмотрел исходный код, чтобы разобраться с ним; для 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, следуя приведенным ниже инструкциям, с одним небольшим дополнением: сразу после « /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, вы также можете попытаться перезапустить службу автономного агента.