使用 Anaconda 環境執行管線
Azure DevOps Services
瞭解如何在工作流程中設定和使用 Anaconda 與 Python。 Anaconda 是適用於數據科學和機器學習的 Python 發行版本。
開始使用
請遵循這些指示,為具有Anaconda環境的範例 Python 應用程式設定管線。
登入您的 Azure DevOps 組織,然後瀏覽至您的專案。
在您的專案中,瀏覽至 Pipelines 頁面。 然後,選擇建立新管線的操作。
先選取 GitHub 作為原始程式碼的位置,以逐步完成精靈的步驟。
系統可能會將您重新導向至 GitHub 以進行登入。 若是如此,請輸入 GitHub 認證。
當存放庫清單出現時,請選取您的 Anaconda 範例存放庫。
Azure Pipelines 會分析存放庫中的程式代碼,並偵測現有的
azure-pipelines.yml
檔案。選取執行。
新的運行已經開始。 等待程式執行完畢。
提示
若要如本主題所述變更 YAML 檔案,請在 [管線] 頁面中選取管線,然後編輯azure-pipelines.yml
檔案。
將 conda 新增至您的系統路徑
在裝載的代理程式上,conda 預設會排除在PATH
之外,使其 Python 版本無法與其他已安裝的版本衝突。 代理程式指令 task.prependpath
將使其可供所有後續步驟使用。
- 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
註意事項
如果您使用自我裝載的代理程式,且未在結尾移除環境,則因為環境已經存在,因此在下一個組建上會收到錯誤。 若要解決,請使用 --force
自變數: conda env create --quiet --force --file environment.yml
。
注意
如果您使用共用記憶體的自我裝載代理程式,並使用相同的 Anaconda 環境平行執行作業,則這些環境之間可能會發生衝突。
若要解析,請使用 --name
自變數和唯一標識符作為自變數值,例如與建置變數的 $(Build.BuildNumber)
串連。
從 Anaconda 安裝套件
下列 YAML 會在名稱為 myEnvironment
的 scipy
conda 環境中安裝套件。
- bash: |
source activate myEnvironment
conda install --yes --quiet --name myEnvironment scipy
displayName: Install Anaconda packages
在 Anaconda 環境中執行管線步驟
注意
每個建置步驟都會在其自己的進程中執行。
當您啟動 Anaconda 環境時,它會編輯 PATH
並對其目前程式進行其他變更。
因此,必須針對每個步驟個別啟用 Anaconda 環境。
- bash: |
source activate myEnvironment
python -m pytest --junitxml=junit/unit-test.xml
displayName: pytest
- task: PublishTestResults@2
inputs:
testResultsFiles: 'junit/*.xml'
condition: succeededOrFailed()
常見問題集
為什麼我收到「許可權遭拒」錯誤?
在託管的 macOS 上,代理程式用戶對安裝 Miniconda 的目錄沒有擁有權。 如需修正,請參閱將 conda 新增至系統路徑下的 [託管 macOS] 索引標籤。
為什麼我的組建在 conda create
或 conda install
步驟上停止回應?
如果您忘記傳遞 --yes
,conda 將會停止並等候用戶互動。
為什麼在 Windows 上啟動環境之後,我的腳本會停止?
在 Windows 上, activate
是 Batch 腳本。 啟用之後,您必須使用 call
命令繼續執行腳本。
請參閱在管線中使用的call
範例。
如何使用多個版本的 Python 來執行測試?
請參閱 在 Azure Pipelines 中建置 Python 應用程式。