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 應用程式設定管線。
登入您的 Azure DevOps 組織,然後瀏覽至您的專案。
在您的專案中,瀏覽至 Pipelines 頁面。 然後,選擇建立新管線的操作。
先選取 GitHub 作為原始程式碼的位置,以逐步完成精靈的步驟。
系統可能會將您重新導向至 GitHub 以進行登入。 若是如此,請輸入 GitHub 認證。
當存放庫清單出現時,請選取您的 Anaconda 範例存放庫。
Azure Pipelines 會分析存放庫中的程式代碼,並偵測現有
azure-pipelines.yml的檔案。選取執行。
新的運行已經開始。 等待程式執行完畢。
提示
若要變更 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 會在名稱為 scipy 的 myEnvironment 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 create 或 conda install 步驟上停止回應?
如果您未通過 --yes,conda 會停止並等待使用者輸入。
為什麼在 Windows 上啟動環境之後,我的腳本會停止?
在 Windows 上, activate 是 Batch 腳本。 啟用之後,您必須使用 call 命令繼續執行腳本。
請參閱在管線中使用的call範例。