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 帐户。
- 转到 python-sample-vscode-flask-tutorial 存储库。
- 在右上角选择 Fork。
- 确保在 “所有者”下选择 GitHub 帐户名称,然后选择“ 创建分叉”。 默认情况下,分叉的名称与父存储库相同,但你可以将其命名为不同的名称。
创建您的管道
- 在 Azure DevOps 项目中,从左侧导航菜单中选择 “管道 ”,然后选择“ 新建管道”,如果此管道是项目中的第一个管道,则 选择“创建管道 ”。
- 在 代码的“位置” 屏幕上,选择 GitHub 作为源代码的位置。
- 在 “选择存储库 ”屏幕上,选择分支 Python 示例存储库。
- 在“配置管道”屏幕上,选择“入门管道”。
自定义管道
在 “查看管道 YAML ”屏幕上,将生成的 azure-pipelines.yml 文件的内容替换为以下代码。 该代码对三个不同的 Python 版本执行以下作:
- 安装所需的 Python 版本和依赖项。
- 将生成工件打包到 ZIP 存档。
- 将存档发布到管道。
- 运行测试。
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 文件的内容替换为以下代码。 该代码执行以下作:
- 安装所需的 Python 版本和依赖项。
- 将生成工件打包到 ZIP 存档。
- 将存档发布到管道。
- 运行测试。
自定义 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 版本运行三次。 这三个版本可以在不同的代理上并行运行。
查看工件和测试结果
若要查看生成项目,请选择“摘要”选项卡上的 [N] 已发布链接。
项目页面会显示已发布的生成项目。
若要查看测试结果,请选择测试选项卡。
清理
如果已完成使用创建的管道,则可以将其删除。
从项目的左侧导航菜单中选择 “管道 ”。
在管道列表中,将鼠标悬停在创建的管道上,选择右侧的“ 更多作 ”图标,然后选择“ 删除”。
或者选择管道,然后在管道页上,选择右上角的“更多操作”图标,然后选择“删除”。
输入管道名称,然后再次选择“ 删除 ”。
已成功创建并运行了生成和测试 Python 应用的管道。 现在可以使用 Azure Pipelines 生成、测试和部署 Python 应用和脚本,作为 CI/CD 过程的一部分。