共用方式為


使用 Anaconda 環境執行管線

Azure DevOps 服務

在您的工作流程中設定並使用 Anaconda 與 Python。 Anaconda 是適用於數據科學和機器學習的 Python 發行版本。

先決條件

Python 已預安裝在 Linux、macOS 和 Windows Microsoft 裝載的 代理程式上。 您不需要再設定任何項目來建置 Python 專案。 若要查看預先安裝的 Python 版本,請參閱 軟體

產品 要求
Azure DevOps - Azure DevOps 專案
- 能夠在由 Microsoft 託管的代理上運行管線。 您可以購買平行作業,也可以申請免費方案。
- YAML 和 Azure Pipelines 的基本知識。 如需詳細資訊,請參閱 建立您的第一個管線
- 權限:
     - 若要建立管線:您必須位於 參與者 群組中,且群組必須將 [建立組建管線 ] 許可權設定為 [允許]。 Project Administrators 群組的成員可以管理管線。
    - 若要建立服務連線:您必須具有服務連線系統管理員建立者角色。
GitHub - GitHub 帳戶。
- 用來授權 Azure Pipelines 的 GitHub 服務連線

開始

請遵循這些指示,為具有Anaconda環境的範例 Python 應用程式設定管線。

  1. 登入您的 Azure DevOps 組織,然後瀏覽至您的專案。

  2. 在您的專案中,瀏覽至 Pipelines 頁面。 然後,選擇建立新管線的操作。

  3. 先選取 GitHub 作為原始程式碼的位置,以逐步完成精靈的步驟。

  4. 系統可能會將您重新導向至 GitHub 以進行登入。 若是如此,請輸入 GitHub 認證。

  5. 當存放庫清單出現時,請選取您的 Anaconda 範例存放庫。

  6. Azure Pipelines 會分析存放庫中的程式代碼,並偵測現有 azure-pipelines.yml 的檔案。

  7. 選取執行

  8. 新的運行已經開始。 等待程式執行完畢。

提示

若要變更 YAML 檔案,如本文所述,請在 [管線] 頁面中選取管線,然後azure-pipelines.yml編輯檔案。

將 conda 新增至您的系統路徑

託管代理程式上,conda 預設不會包含在中 PATH ,以防止其 Python 版本與其他已安裝版本衝突。 使用 task.prependpath agent 命令,讓 conda 可供所有後續步驟使用。

- bash: echo "##vso[task.prependpath]$CONDA/bin"
  displayName: Add conda to PATH

建立環境

從命令列參數

conda create 命令會使用您傳遞的引數建立環境。

- bash: conda create --yes --quiet --name myEnvironment
  displayName: Create Anaconda environment

從 YAML

您可以將檔案簽入 environment.yml 存放庫,以定義 Anaconda 環境的組態。

- script: conda env create --quiet --file environment.yml
  displayName: Create Anaconda environment

注意

如果您使用自我裝載代理程式,且未在最後移除環境,則會在下一個組建時收到錯誤,因為環境已存在。 若要修正此問題,請先移除環境,再使用 conda env remove --name your-env-name建立新環境。

注意

如果您使用共用儲存體的自託管代理程式,並使用相同的 Anaconda 環境平行執行工作,則這些環境之間可能會發生衝突。 若要解決此問題,請使用 --name 引數和唯一識別碼作為引數值,例如與建置變數的 $(Build.BuildNumber) 串聯。

從 Anaconda 安裝套件

下列 YAML 會在名稱為 scipymyEnvironment conda 環境中安裝套件。

- bash: |
    conda activate myEnvironment
    conda install --yes --quiet --name myEnvironment scipy
  displayName: Install Anaconda packages

在 Anaconda 環境中執行管線步驟

注意

每個建置步驟都會在其自己的進程中執行。 當您啟動 Anaconda 環境時,它會編輯PATH並對當前過程進行其他變更。 因此,請針對每個步驟分別啟用 Anaconda 環境。

- bash: |
    conda activate myEnvironment
    python -m pytest --junitxml=junit/unit-test.xml
  displayName: pytest

- task: PublishTestResults@2
  inputs:
    testResultsFiles: 'junit/*.xml'
  condition: succeededOrFailed()

FAQ

為什麼我收到「許可權遭拒」錯誤?

在託管的 macOS 上,代理程式使用者不擁有安裝 Miniconda 的目錄。 若要解決此問題,請前往 將 conda 新增至系統路徑下的「託管 macOS」標籤。

為什麼我的組建在 conda createconda install 步驟上停止回應?

如果您未通過 --yes,conda 會停止並等待使用者輸入。

為什麼在 Windows 上啟動環境之後,我的腳本會停止?

在 Windows 上, activate 是 Batch 腳本。 啟用之後,您必須使用 call 命令繼續執行腳本。 請參閱在管線中使用的call範例。

如何使用多個版本的 Python 來執行測試?

移至 在 Azure Pipelines 中建置 Python 應用程式