Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure DevOps Services
Используйте непрерывную интеграцию Azure Pipelines и непрерывную доставку (CI/CD) для сборки, развертывания и тестирования проектов PHP.
Узнайте, как создать конвейер PHP, развернуть конвейер с примером проекта в Службе приложений Azure и как настроить среду.
Дополнительные сведения о службе приложений Azure см. в статье Создание веб-приложения PHP в службе приложений Azure.
Предпосылки
Продукт | Требования |
---|---|
Azure DevOps | - Проект Azure DevOps. — способность запуска потоков на хостинговых агентах Microsoft. Вы можете приобрести параллельное задание или запросить уровень "Бесплатный". — Базовые знания о YAML и Azure Pipelines. Дополнительные сведения см. в разделе Создайте ваш первый конвейер. Разрешения - : — Чтобы создать конвейер: необходимо находиться в группе Участники, а для группы должно быть установлено разрешение на создание конвейера сборки на 'Разрешить'. Члены группы "Администраторы проектов" могут управлять конвейерами. — Для создания подключений к службам необходимо иметь роль администратора или создателя для подключений служб. |
GitHub | — учетная запись GitHub. - Подключение службы GitHub для авторизации Azure Pipelines. |
Лазурный | Подписка Azure |
Продукт | Требования |
---|---|
Azure DevOps | - Проект Azure DevOps. — Самостоятельно размещённый агент. Сведения о создании см. в разделе "Локальные агенты". — Базовые знания о YAML и Azure Pipelines. Дополнительные сведения см. в разделе Создайте ваш первый конвейер. Разрешения - : — Чтобы создать конвейер: необходимо находиться в группе Участники, а для группы должно быть установлено разрешение на создание конвейера сборки на 'Разрешить'. Члены группы "Администраторы проектов" могут управлять конвейерами. — Для создания подключений к службам необходимо иметь роль администратора или создателя для подключений служб. |
GitHub | — учетная запись GitHub. - Подключение службы GitHub для авторизации Azure Pipelines. |
Лазурный | Подписка Azure |
Если вы собираетесь развернуть на Azure App Service, вам нужно создать веб-приложение.
Получение кода
Если у вас уже есть приложение на сайте 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.
Ознакомьтесь с дополнительными сведениями о более распространенных способах настройки конвейера.
Развертывание в службе приложений Azure
Используйте конвейер для создания веб-приложения PHP и развертывания в Службе приложений Azure. Служба приложений Azure — это служба на базе HTTP для размещения веб-приложений, интерфейсов REST API и серверной части мобильных решений.
Вы можете использовать задачи для архивации ваших файлов, публикации артефакта сборки, а затем использовать задачу Azure Web App для развертывания в службе приложений Azure.
Этот конвейер состоит из двух этапов: сборка и развертывание. На этапе сборки PHP 8.3 устанавливается с Composer. Файлы приложения архивируются и передаются в пакет с именем 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-22.04'
# 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 предустановлен на агентах, управляемых Microsoft, вместе со многими стандартными библиотеками для каждой версии PHP. Для выполнения сборок можно использовать агенты Linux, macOS или Windows. Дополнительные сведения и точные версии PHP, которые предварительно установлены, см. в разделе размещенных корпорацией Майкрософт агентов.
В агенте Ubuntu, размещенном корпорацией Майкрософт, устанавливаются несколько версий PHP. Символьная ссылка на /usr/bin/php
указывает на текущую заданную версию PHP, так что при запуске php
выполняется именно эта версия.
Чтобы использовать версию PHP, отличной от используемой по умолчанию, можно указать на нее ссылку с помощью средства update-alternatives
. Задайте нужную версию PHP, добавив следующий фрагмент кода в файл azure-pipelines.yml
и измените значение переменной phpVersion.
pool:
vmImage: 'ubuntu-22.04'
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, какой каталог использовать. Например, если composer.json находится внутри вложенной папки pkgs
composer install --no-interaction --working-dir=pkgs
Можно также указать абсолютный путь, используя встроенные системные переменные:
composer install --no-interaction --working-dir='$(system.defaultWorkingDirectory)/pkgs'