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


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

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

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

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

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

Создать форк примера кода

Форкните репозиторий с примером Python в вашу учетную запись GitHub.

  1. Перейдите в репозиторий python-sample-vscode-flask-tutorial .
  2. Выберите Форк в правом верхнем углу страницы.
  3. Выберите учетную запись GitHub. По умолчанию форк называется так же, как родительский репозиторий, но вы можете дать ему другое имя.

Внимание

В следующих процедурах может потребоваться создать подключение службы GitHub или вы можете быть перенаправлены на GitHub для входа, установки или авторизации Azure Pipelines. Следуйте инструкциям на экране, чтобы завершить процесс. Дополнительные сведения см. в разделе Доступ к репозиториям GitHub.

Создание конвейера

  1. В проекте Azure DevOps выберите Pipelines Create Pipelines>, а затем выберите GitHub в качестве расположения исходного кода.
  2. На экране "Выбор репозитория" выберите форкнутый пример репозитория.
  3. На экране "Настройка конвейера" выберите "Начальный конвейер".

Настройка конвейера

На экране проверки конвейера YAML замените содержимое созданного azure-pipelines.yml файла следующим кодом. Код.

  • Устанавливает необходимые версии 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'

Настройте azure-pipelines.yml в соответствии с конфигурацией проекта.

  • Если у вас другой пул агентов, измените параметр пула name .
  • При необходимости измените версию Python на версию, установленную на локальном агенте.
  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.

На странице "Артефакты" показаны опубликованные артефакты сборки. Скриншот ссылки на опубликованные артефакты сборки.

Чтобы просмотреть результаты теста, перейдите на вкладку "Тесты ".

Снимок экрана: результаты теста конвейера.

Очистка

Завершив работу с этим кратким руководством, вы можете удалить созданный проект Azure DevOps.

  1. В вашем проекте выберите значок настроек в левом нижнем углу страницы.
  2. В нижней части страницы обзора проекта нажмите кнопку "Удалить".
  3. Введите имя проекта и нажмите кнопку "Удалить".

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

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