Поделиться через


Создание и публикация приложения Python

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020

В этом кратком руководстве вы создадите конвейер, который создает и тестирует приложение Python. Вы узнаете, как использовать Azure Pipelines для создания, тестирования и развертывания приложений и сценариев Python в рамках системы непрерывной интеграции и непрерывной доставки (CI/CD).

Предварительные условия

Python предварительно установлен на агентах, хостингующихся на Microsoft для Linux, macOS и Windows. Вам не нужно ничего больше настраивать для создания проектов Python. Чтобы узнать, какие версии Python предварительно установлены, см. статью Software.

Продукт Требования
Azure DevOps - Проект Azure DevOps.
— способность запуска потоков на хостинговых агентах Microsoft. Вы можете приобрести параллельное задание или запросить уровень "Бесплатный".
— Базовые знания о YAML и Azure Pipelines. Дополнительные сведения см. в разделе Создайте ваш первый конвейер.
Разрешения - :
     — Чтобы создать конвейер: необходимо быть в группе Участников, и у группы должно быть разрешение создать конвейер сборки установлено на "Разрешить". Члены группы "Администраторы проектов" могут управлять конвейерами.
    — Для создания подключений к службам необходимо иметь роль администратора или создателя для подключений служб.
GitHub — учетная запись GitHub.
- Подключение службы GitHub для авторизации Azure Pipelines.
Продукт Требования
Azure DevOps - Проект Azure DevOps.
— локальный агент с установленной версией Python 3.12 или другой версией Python. Сведения о создании см. в разделе "Локальные агенты".
— Базовые знания о YAML и Azure Pipelines. Дополнительные сведения см. в разделе Создайте ваш первый конвейер.
Разрешения - :
    — Чтобы создать конвейер: необходимо быть в группе Участников, и у группы должно быть разрешение создать конвейер сборки установлено на "Разрешить". Члены группы "Администраторы проектов" могут управлять конвейерами.
    — Для создания подключений к службам необходимо иметь роль администратора или создателя для подключений служб.
GitHub — учетная запись GitHub.
- Подключение службы GitHub для авторизации Azure Pipelines.

Внимание

Для процедур 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.

Следующий шаг