Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure DevOps Services
Use la integración continua de Azure Pipelines y la entrega continua (CI/CD) para compilar, implementar y probar los proyectos php.
Aprenda a crear una canalización php, a implementar una canalización con un proyecto de ejemplo en Azure App Service y a configurar el entorno.
Para más información sobre Azure App Service, consulte Creación de una aplicación web PHP en Azure App Service.
Prerrequisitos
Producto | Requisitos |
---|---|
Azure DevOps | - Un proyecto de Azure DevOps . - Tener la capacidad de ejecutar canalizaciones en agentes hospedados por Microsoft. Puede comprar un trabajo paralelo o solicitar un nivel gratis. - Conocimientos básicos de YAML y Azure Pipelines. Para más información, consulte Creación de la primera canalización. - Permisos: - Para crear una canalización: debe estar en el grupo Colaboradores y el grupo debe tener el permiso Crear canalización de compilación establecido en Permitir. Los miembros del grupo Administradores de proyectos pueden administrar canalizaciones. - Para crear conexiones de servicio: debe tener el rol Administrador o Creador para las conexiones de servicio. |
GitHub | - Una cuenta de GitHub . - Una conexión de servicio de GitHub para autorizar Azure Pipelines. |
Celeste | Una suscripción de Azure. |
Producto | Requisitos |
---|---|
Azure DevOps | - Un proyecto de Azure DevOps . - Un agente autohospedado. Para crear uno, consulte Agentes autohospedados. - Conocimientos básicos de YAML y Azure Pipelines. Para más información, consulte Creación de la primera canalización. - Permisos: - Para crear una canalización: debe estar en el grupo Colaboradores y el grupo debe tener el permiso Crear canalización de compilación establecido en Permitir. Los miembros del grupo Administradores de proyectos pueden administrar canalizaciones. - Para crear conexiones de servicio: debe tener el rol Administrador o Creador para las conexiones de servicio. |
GitHub | - Una cuenta de GitHub . - Una conexión de servicio de GitHub para autorizar Azure Pipelines. |
Celeste | Una suscripción de Azure. |
Si va a implementar en Azure App Service, debe tener una aplicación web creada.
Obtención del código
Si ya tiene una aplicación en GitHub que desea implementar, puede crear una canalización para ese código. Pero, si es un nuevo usuario, es posible que empiece mejor con nuestro código de ejemplo. En ese caso, haz un fork del siguiente repositorio en GitHub:
https://github.com/Azure-Samples/basic-php-composer
Creación de una canalización
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.
Vaya a canalizaciones y seleccione Nueva canalización.
Seleccione la ubicación de origen (GitHub, Git de Azure Repos, Bitbucket Cloud u otros repositorios de Git).
Seleccione el repositorio donde se encuentra el código.
Seleccione PHP en la pestaña Configurar .
Asegúrese de que la versión de PHP es 8.3.
Examine la nueva canalización. Cuando esté listo, seleccione Guardar y ejecutar.
Se le pedirá que confirme un nuevo archivo azure-pipelines.yml en el repositorio. Seleccione Guardar y ejecutar de nuevo.
Si quiere ver la canalización en acción, seleccione el trabajo de compilación.
Ahora tiene una canalización YAML en funcionamiento en su repositorio (azure-pipelines.yml) que está lista para personalizar.
Cuando quiera realizar cambios en la canalización, seleccione la canalización en la página Canalizaciones y, a continuación, Edite el archivo azure-pipelines.yml .
Lea más información sobre algunas de las formas más comunes de personalizar la canalización.
Implementación en App Service
Use una canalización para compilar una aplicación web PHP e implementarla en Azure App Service. Azure App Service es un servicio basado en HTTP para hospedar aplicaciones web, API REST y back-ends para dispositivos móviles.
Puede usar tareas para archivar los archivos, publicar un artefacto de compilación y, a continuación, usar la tarea Azure Web App para implementar en Azure App Service.
Este flujo de trabajo tiene dos fases: Compilación y Despliegue. En la fase de compilación, PHP 8.3 se instala con composer. Los archivos de la aplicación se archivan y cargan en un paquete denominado drop
. Durante la fase de implementación, el drop
paquete se implementa en Azure App Service como una aplicación web.
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
Configuración del entorno de compilación
Usa Azure Pipelines para compilar tus proyectos PHP sin configurar la infraestructura.
Uso de una versión específica de PHP
PHP está preinstalado en agentes hospedados por Microsoft, junto con muchas bibliotecas comunes por versión php. Puede usar agentes de Linux, macOS o Windows para ejecutar las compilaciones. Para obtener más información y las versiones exactas de PHP que se instalan previamente, consulte Agentes hospedados por Microsoft.
En el agente ubuntu hospedado por Microsoft, se instalan varias versiones de PHP. Un enlace simbólico en /usr/bin/php
apunta a la versión de PHP establecida actualmente, de modo que, al ejecutar php
, la versión establecida se ejecuta.
Para usar una versión php distinta de la predeterminada, el vínculo simbólico se puede señalar a esa versión mediante la update-alternatives
herramienta . Establezca la versión de PHP que desee agregando el siguiente fragmento de código al azure-pipelines.yml
archivo y cambie el valor de la variable 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)'
Instalación de dependencias
Para usar Composer para instalar dependencias, agregue el siguiente fragmento de código al azure-pipelines.yml
archivo.
- script: composer install --no-interaction --prefer-dist
displayName: 'composer install'
Prueba con phpunit
Para ejecutar pruebas con phpunit, agregue el siguiente fragmento de código al azure-pipelines.yml
archivo.
- script: ./phpunit
displayName: 'Run tests with phpunit'
Conservación de la aplicación PHP con el registro de compilación
Para guardar los artefactos de esta compilación con el registro de compilación, agregue este fragmento de código al archivo azure-pipelines.yml
.
Opcionalmente, personalice el valor de rootFolderOrFile para modificar lo que se incluye en el archivo.
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(system.defaultWorkingDirectory)'
includeRootFolder: false
- task: PublishBuildArtifacts@1
Uso de una ubicación de compositor personalizada
Si composer.json está en una subcarpeta en lugar del directorio raíz, puede usar el argumento --working-dir
para indicar a Composer qué directorio se va a usar. Por ejemplo, si composer.json está dentro de la subcarpeta pkgs
composer install --no-interaction --working-dir=pkgs
También puede especificar la ruta de acceso absoluta mediante las variables del sistema integradas:
composer install --no-interaction --working-dir='$(system.defaultWorkingDirectory)/pkgs'