Создание и тестирование приложений 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
Создание конвейера
Войдите в свою организацию Azure DevOps и откройте нужный проект.
Перейдите к конвейерам и выберите "Создать конвейер".
Выберите исходное расположение (GitHub, Azure Repos Git, Bitbucket Cloud или другие репозитории Git).
Выберите репозиторий, в котором находится код.
Выберите PHP на вкладке "Настройка ".
Убедитесь, что версия PHP — 8.3.
Проверьте новый конвейер. Когда будете готовы, выберите Сохранить и запустить.
Вам будет предложено зафиксировать новый файл 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'