簡體   English   中英

用於運行 pytest 的 Azure 自托管代理

[英]Azure Self hosted agent to run pytest

我在我的本地 VM 上安裝了一個自托管代理,它連接到 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://docs.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 ://docs.microsoft.com /azure/devops/pipelines/tasks/tool/use-python-version ---------------------------------- --------- [錯誤]體系結構 x64 的版本規范 3.8.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 ---------------

此錯誤是指 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-代理使用此任務

上述文檔中的奧秘在於,它們所指的那些“tool_files”是什么?

幸運的是,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 的建議,你也可以嘗試重啟自托管代理服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM