共用方式為


建置和發佈 Python 應用程式

Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

在本快速入門中,您會建立管線來建置及測試 Python 應用程式。 您會看到如何使用 Azure Pipelines 來建置、測試及部署 Python 應用程式和腳本,作為持續整合和持續傳遞 (CI/CD) 系統的一部分。

必要條件

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

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

重要

GitHub 程序可能需要您在 GitHub 中採取下列一或多個動作:

  • 登入。
  • 授權 Azure Pipelines。
  • 向 GitHub 組織進行驗證。
  • 安裝 Azure Pipelines 應用程式。

請按照指示完成所需的程序。 如需詳細資訊,請參閱 存取 GitHub 存放庫

複製範例程式碼

將範例 Python 存放庫分支至您的 GitHub 帳戶。

  1. 移至 python-sample-vscode-flask-tutorial 存放庫。
  2. 選取右上角的 [分叉]。
  3. 請確定您的 GitHub 帳戶名稱已在 [擁有者] 底下選取,然後選取 [ 建立分支]。 預設情況下,分支的名稱與父儲存庫相同,但您可以為其命名不同。

建立管線

  1. 在您的 Azure DevOps 專案中,從左側導覽功能表中選取 [管線] ,然後選取 [ 新增管線],或選取 [建立管線] (如果此管線是專案中的第一個管線)。
  2. 在 [ 您的程式碼在哪裡 ] 畫面上,選取 [GitHub ] 作為原始程式碼的位置。
  3. [選取存放庫 ] 畫面上,選取分支的 Python 範例存放庫。
  4. 在 [設定您的管線] 畫面上,選取 [入門管線]。

自訂您的流程

檢閱管線 YAML畫面上,將產生的azure-pipelines.yml檔案內容取代為下列程式碼。 程式碼在三個不同版本的 Python 上執行下列動作:

  1. 安裝所需的 Python 版本和相依性。
  2. 封裝將成品建置至 ZIP 封存。
  3. 將存檔發佈至您的管線。
  4. 執行測試。
trigger:
- main

pool:
  vmImage: ubuntu-latest

strategy:
  matrix:
    Python310:
      python.version: '3.10'
    Python311:
      python.version: '3.11'
    Python312:
      python.version: '3.12'

steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '$(python.version)'
    displayName: 'Use Python $(python.version)'

  - script: |
      python -m pip install --upgrade pip
      pip install -r requirements.txt
    displayName: 'Install dependencies'

  - task: ArchiveFiles@2
    displayName: 'Archive files'
    inputs:
      rootFolderOrFile: $(System.DefaultWorkingDirectory)
      includeRootFolder: false
      archiveType: zip
      archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId)-$(python.version).zip
      replaceExistingArchive: true

  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: '$(Build.ArtifactStagingDirectory)'
      ArtifactName: 'drop'
      publishLocation: 'Container'

  - script: |
      pip install pytest pytest-azurepipelines
      pytest
    displayName: 'pytest'

檢閱管線 YAML畫面上,將產生的azure-pipelines.yml檔案內容取代為下列程式碼。 程式碼會執行下列動作:

  1. 安裝所需的 Python 版本和相依性。
  2. 封裝將成品建置至 ZIP 封存。
  3. 將存檔發佈至您的管線。
  4. 執行測試。

自訂 azure-pipelines.yml 以符合您的項目組態。

  • 如果您有不同的代理程式集區,請將集區 name 預留位置替換為您的集區名稱或 default
  • 如有必要,請將 Python versionSpec 變更為安裝在自我裝載代理程式上的版本。
  trigger:
  - main

  pool: 
    name: '<your-pool-name or default>'

  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '3.12'
    displayName: 'Use Python 3.12'  

  - script: |
      python -m pip install --upgrade pip
      pip install -r requirements.txt
    displayName: 'Install dependencies'


  - task: ArchiveFiles@2
    displayName: 'Archive files'
    inputs:
      rootFolderOrFile: $(System.DefaultWorkingDirectory)
      includeRootFolder: false
      archiveType: zip
      archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
      replaceExistingArchive: true

  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: '$(Build.ArtifactStagingDirectory)'
      ArtifactName: 'drop'
      publishLocation: 'Container'

  - script: |
      pip install pytest pytest-azurepipelines
      pytest
    displayName: 'pytest'

執行您的流程

選取 [ 儲存並執行],然後選取 [ 儲存並再次執行 ]。 您可以在「摘要」畫面上選取「工作」,以查看您的工作實際運作情況。

工作會執行三次,針對每個指定的 Python 版本執行一次。 這三個版本可以在不同的代理程式上平行執行。

具有多個版本的已完成 Python 作業的螢幕擷取畫面。

已完成單一 Python 作業的螢幕擷取畫面。

檢視構件和測試結果

若要檢視建置成品,請選取 [摘要] 索引標籤上的 [N] 已發佈連結。

已發佈組建工件鏈接的螢幕快照。

工件 頁面會顯示已發佈的組建工件。

已發佈組建成品的螢幕快照。

單一作業發佈的建置成果的螢幕擷取畫面。

若要檢視測試結果,請選取 [ 測試] 索引標籤。

管線測試結果的螢幕快照。

清理

如果您已完成使用所建立的管線,則可以將其刪除。

  1. 從專案的左側導覽功能表中選取 [管線]。

  2. 在管線清單中,將滑鼠停留在您建立的管線上,選取右側的 [ 更多動作 ] 圖示,然後選取 [ 刪除]。

    或者選取管線,然後在管線頁面上,選取右上角的 [ 更多動作 ] 圖示,然後選取 [ 刪除]。

  3. 輸入管線名稱,然後再次選取 [刪除]。

您已成功建立並執行建置和測試 Python 應用程式的管線。 您現在可以使用 Azure Pipelines 來建置、測試和部署 Python 應用程式和腳本,作為 CI/CD 程式的一部分。

後續步驟