生成并发布 Python 应用

Azure DevOps Services |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 的基本知识。 有关详细信息,请参阅创建第一个管道
- 权限:
     - 若要创建管道:必须位于 “参与者 ”组中,并且该组需要将 “创建生成管道 ”权限设置为“允许”。 项目管理员组的成员可以管理管道。
    - 若要创建服务连接:必须具有服务连接的管理员创建者角色。
GitHub - GitHub 帐户。
- 用于授权 Azure Pipelines 的 GitHub 服务连接
产品 要求
Azure DevOps - 一个 Azure DevOps 项目
- 安装了 Python 3.12 或其他 Python 版本的自承载代理。 若要创建一个代理,请参阅自托管代理
- 对 YAML 和 Azure Pipelines 的基本知识。 有关详细信息,请参阅创建第一个管道
- 权限:
    - 若要创建管道:必须位于 “参与者 ”组中,并且该组需要将 “创建生成管道 ”权限设置为“允许”。 项目管理员组的成员可以管理管道。
    - 若要创建服务连接:必须具有服务连接的管理员创建者角色。
GitHub - GitHub 帐户。
- 用于授权 Azure Pipelines 的 GitHub 服务连接

重要

GitHub 过程可能需要在 GitHub 中执行以下一项或多项作业:

  • 登录。
  • 授权 Azure Pipelines。
  • 向 GitHub 组织进行身份验证。
  • 安装 Azure Pipelines 应用。

按照说明完成所需的过程。 有关详细信息,请参阅访问 GitHub 存储库

分支示例代码

将示例 Python 存储库分叉到你的 GitHub 帐户。

  1. 转到 python-sample-vscode-flask-tutorial 存储库。
  2. 在右上角选择 Fork
  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 过程的一部分。

后续步骤