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


Создание и тестирование приложений PHP

Azure DevOps Services

Используйте непрерывную интеграцию Azure Pipelines и непрерывную доставку (CI/CD) для сборки, развертывания и тестирования проектов PHP.

Узнайте, как создать конвейер PHP, развернуть конвейер с примером проекта для приложение Azure service и как настроить среду.

Дополнительные сведения о службе приложение Azure см. в статье "Создание веб-приложения PHP в службе приложение Azure".

Необходимые компоненты

Убедитесь, что у вас есть указанные ниже компоненты.

  • Учетная запись GitHub, в которой можно создать репозиторий. Создайте ее бесплатно.

  • Организация Azure DevOps. Создайте ее бесплатно. Если у вашей команды уже есть организация Azure DevOps, убедитесь, что вы являетесь администратором проекта Azure DevOps, который вы хотите использовать.

  • Возможность запуска конвейеров на размещенных агентах Майкрософт. Чтобы использовать агенты, размещенные Корпорацией Майкрософт, ваша организация Azure DevOps должна иметь доступ к размещенным в Майкрософт параллельным заданиям. Вы можете приобрести параллельное задание или запросить бесплатное предоставление.

  • Учетная запись Azure. Если у вас нет учетной записи, вы можете создать ее бесплатно.

    Совет

    Если вы не знакомы с этим, самый простой способ приступить к работе — использовать тот же адрес электронной почты, что и владелец организации Azure Pipelines и подписки Azure.

  • Если вы собираетесь развернуть в службе приложение Azure, необходимо создать веб-приложение.

Получение кода

Если у вас уже есть приложение на сайте GitHub, которое вы хотите развернуть, можно создать конвейер для этого кода. Но если вы новый пользователь, вы можете лучше начать с использования нашего примера кода. В этом случае вилкой следующего репозитория на сайте GitHub:

https://github.com/Azure-Samples/basic-php-composer

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

  1. Войдите в свою организацию Azure DevOps и откройте нужный проект.

  2. Перейдите к конвейерам и выберите "Создать конвейер".

  3. Выберите исходное расположение (GitHub, Azure Repos Git, Bitbucket Cloud или другие репозитории Git).

  4. Выберите репозиторий, в котором находится код.

  5. Выберите PHP на вкладке "Настройка ".

  6. Убедитесь, что версия PHP — 8.3.

  7. Проверьте новый конвейер. Когда будете готовы, выберите Сохранить и запустить.

    Кнопка

  8. Вам будет предложено зафиксировать новый файл azure-pipelines.yml в репозитории. Еще раз выберите Сохранить и запустить.

    Если вы хотите посмотреть конвейер в действии, выберите задание сборки.

    Теперь в репозитории есть рабочий конвейер YAML (azure-pipelines.yml), готовый к настройке!

Если вы хотите внести изменения в конвейер, выберите конвейер на странице "Конвейеры " и измените файл azure-pipelines.yml .

Ознакомьтесь с дополнительными сведениями о более распространенных способах настройки конвейера.

Развертывание в службу приложений

Используйте конвейер для создания веб-приложения PHP и развертывания в службе приложение Azure. Служба приложений Azure — это служба на базе HTTP для размещения веб-приложений, интерфейсов REST API и серверной части мобильных решений.

Вы можете использовать задачи для архивации файлов, публикации артефакта сборки, а затем использовать задачу веб-приложения Azure для развертывания в службе приложение Azure.

Этот конвейер состоит из двух этапов: сборка и развертывание. На этапе сборки PHP 8.3 устанавливается с композитором. Файлы приложения архивируются и передаются в пакет с именем drop. На этапе drop развертывания пакет развертывается в службе приложение Azure в качестве веб-приложения.


trigger:
- main

variables:
  # Azure Resource Manager connection created during pipeline creation
  azureSubscription: 'subscription-id'
  # Web app name
  webAppName: 'web-app-name'
  # Agent VM image name
  vmImageName: 'ubuntu-latest'
  # Environment name
  environmentName: 'environment-name'
  # Root folder under which your composer.json file is available.
  rootFolder: $(System.DefaultWorkingDirectory)

stages:
- stage: Build
  displayName: Build stage
  variables:
    phpVersion: '8.3'
  jobs:
  - job: BuildJob
    pool:
      vmImage: $(vmImageName)
    steps:
    - script: |
        sudo update-alternatives --set php /usr/bin/php$(phpVersion)
        sudo update-alternatives --set phar /usr/bin/phar$(phpVersion)
        sudo update-alternatives --set phpdbg /usr/bin/phpdbg$(phpVersion)
        sudo update-alternatives --set php-cgi /usr/bin/php-cgi$(phpVersion)
        sudo update-alternatives --set phar.phar /usr/bin/phar.phar$(phpVersion)
        php -version
      workingDirectory: $(rootFolder)
      displayName: 'Use PHP version $(phpVersion)'

    - script: composer install --no-interaction --prefer-dist
      workingDirectory: $(rootFolder)
      displayName: 'Composer install'

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

    - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
      displayName: 'Upload package'
      artifact: drop

- stage: Deploy
  displayName: 'Deploy Web App'
  dependsOn: Build
  condition: succeeded()
  jobs:
  - deployment: DeploymentJob
    pool:
      vmImage: $(vmImageName)
    environment: $(environmentName)
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            displayName: 'Deploy Azure Web App'
            inputs:
              azureSubscription: $(azureSubscription)
              appName: $(webAppName)
              package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip

Настройка среды сборки

Используйте Azure Pipelines для создания проектов PHP без настройки инфраструктуры.

Использование определенной версии PHP

PHP предварительно установлен в агентах, размещенных в Майкрософт, а также во многих общих библиотеках для каждой версии PHP. Для выполнения сборок можно использовать агенты Linux, macOS или Windows. Дополнительные сведения и точные версии PHP, которые предварительно установлены, см. в разделе агентов, размещенных корпорацией Майкрософт.

В агенте Ubuntu, размещенном корпорацией Майкрософт, устанавливаются несколько версий PHP. Асимметричные ссылки на /usr/bin/php текущую версию PHP, поэтому при запуске phpвыполняется заданная версия набора.

Чтобы использовать версию PHP, отличной от используемой по умолчанию, ссылка на нее может быть указана update-alternatives с помощью средства. Задайте нужную версию PHP, добавив следующий фрагмент кода в azure-pipelines.yml файл и измените значение переменной phpVersion .

pool:
  vmImage: 'ubuntu-latest'

variables:
  phpVersion: 8.2

steps:
- script: |
    sudo update-alternatives --set php /usr/bin/php$(phpVersion)
    sudo update-alternatives --set phar /usr/bin/phar$(phpVersion)
    sudo update-alternatives --set phpdbg /usr/bin/phpdbg$(phpVersion)
    sudo update-alternatives --set php-cgi /usr/bin/php-cgi$(phpVersion)
    sudo update-alternatives --set phar.phar /usr/bin/phar.phar$(phpVersion)
    php -version
  displayName: 'Use PHP version $(phpVersion)'

Установка зависимостей

Чтобы использовать Composer для установки зависимостей, добавьте следующий фрагмент кода в azure-pipelines.yml файл.

- script: composer install --no-interaction --prefer-dist
  displayName: 'composer install'

Тестирование с помощью phpunit

Чтобы выполнить тесты с phpunit, добавьте следующий фрагмент кода в azure-pipelines.yml файл.

- script: ./phpunit
  displayName: 'Run tests with phpunit'

Сохранение приложения PHP с записью сборки

Чтобы сохранить артефакты этой сборки с записью сборки, добавьте следующий фрагмент кода в azure-pipelines.yml файл. При необходимости настройте значение rootFolderOrFile , чтобы изменить то, что входит в архив.

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(system.defaultWorkingDirectory)'
    includeRootFolder: false
- task: PublishBuildArtifacts@1

Использование настраиваемого расположения композитора

Если composer.json находится в подпапке вместо корневого каталога, можно использовать аргумент, чтобы сообщить композитору --working-dir , какой каталог следует использовать. Например, если composer.json находится внутри вложенной папки pkgs

composer install --no-interaction --working-dir=pkgs

Можно также указать абсолютный путь, используя встроенные системные переменные:

composer install --no-interaction --working-dir='$(system.defaultWorkingDirectory)/pkgs'