Compartir vía


Compilación y prueba de aplicaciones PHP

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

  1. Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.

  2. Vaya a canalizaciones y seleccione Nueva canalización.

  3. Seleccione la ubicación de origen (GitHub, Git de Azure Repos, Bitbucket Cloud u otros repositorios de Git).

  4. Seleccione el repositorio donde se encuentra el código.

  5. Seleccione PHP en la pestaña Configurar .

  6. Asegúrese de que la versión de PHP es 8.3.

  7. Examine la nueva canalización. Cuando esté listo, seleccione Guardar y ejecutar.

    Botón Guardar y ejecutar en un nuevo flujo de trabajo de YAML

  8. 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'