Partager via


Créer et tester des applications PHP

Azure DevOps Services

Utilisez l’intégration continue et la livraison continue d’Azure Pipelines (CI/CD) pour générer, déployer et tester vos projets PHP.

Découvrez comment créer un pipeline PHP, déployer un pipeline avec un exemple de projet sur Azure App Service et comment configurer votre environnement.

Pour en savoir plus sur Azure App Service, consultez Créer une application web PHP dans Azure App Service.

Conditions préalables

Produit Exigences
Azure DevOps - Un projet Azure DevOps .
- Possibilité d’exécuter des pipelines sur des agents hébergés par Microsoft. Vous pouvez acheter un travail parallèle ou demander un niveau gratuit.
- Connaissance de base de YAML et d’Azure Pipelines. Pour plus d’informations, consultez Créer votre premier pipeline.
- Autorisations :
     - Pour créer un pipeline : vous devez être dans le groupe Contributeurs et le groupe doit disposer de la permission Créer un pipeline de build définie sur Autoriser. Les membres du groupe Administrateurs de projet peuvent gérer les pipelines.
    - Pour créer des connexions de service : vous devez avoir le rôle Administrateur ou Créateur pour les connexions de service.
Lien avec GitHub - Un compte GitHub .
- Connexion de service GitHub pour autoriser Azure Pipelines.
Microsoft Azure Un abonnement Azure.
Produit Exigences
Azure DevOps - Un projet Azure DevOps .
- Un agent auto-hébergé. Pour en créer un, consultez les agents auto-hébergés.
- Connaissance de base de YAML et d’Azure Pipelines. Pour plus d’informations, consultez Créer votre premier pipeline.
- Autorisations :
    - Pour créer un pipeline : vous devez être dans le groupe Contributeurs et le groupe doit disposer de la permission Créer un pipeline de build définie sur Autoriser. Les membres du groupe Administrateurs de projet peuvent gérer les pipelines.
    - Pour créer des connexions de service : vous devez avoir le rôle Administrateur ou Créateur pour les connexions de service.
Lien avec GitHub - Un compte GitHub .
- Connexion de service GitHub pour autoriser Azure Pipelines.
Microsoft Azure Un abonnement Azure.

Si vous allez déployer sur Azure App Service, vous devez créer une application web.

Obtenir le code

Si vous disposez déjà d’une application sur GitHub que vous souhaitez déployer, vous pouvez créer un pipeline pour ce code. Toutefois, si vous êtes un nouvel utilisateur, vous pouvez obtenir un meilleur démarrage en utilisant notre exemple de code. Dans ce cas, fork le dépôt suivant sur GitHub :

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

Créer une chaîne de traitement

  1. Connectez-vous à votre organisation Azure DevOps et accédez à votre projet.

  2. Accédez aux pipelines, puis sélectionnez Nouveau pipeline.

  3. Sélectionnez votre emplacement source (GitHub, Azure Repos Git, Bitbucket Cloud ou d’autres référentiels Git).

  4. Sélectionnez le référentiel où se trouve votre code.

  5. Sélectionnez PHP sous l’onglet Configurer .

  6. Vérifiez que la version PHP est 8.3.

  7. Examinez votre nouveau pipeline. Lorsque vous êtes prêt, sélectionnez Enregistrer et exécuter.

    Bouton Enregistrer et exécuter dans un nouveau pipeline YAML

  8. Vous êtes invité à valider un nouveau fichier azure-pipelines.yml dans votre référentiel. Sélectionnez Enregistrer et réexécuter .

    Si vous souhaitez voir votre pipeline en action, sélectionnez le travail de build.

    Vous disposez maintenant d’un pipeline YAML opérationnel (azure-pipelines.yml) dans votre référentiel prêt à être personnalisé !

Lorsque vous souhaitez apporter des modifications à votre pipeline, sélectionnez votre pipeline dans la page Pipelines , puis modifiez le fichier azure-pipelines.yml .

Pour en savoir plus, découvrez quelques-unes des façons les plus courantes de personnaliser votre pipeline.

Déployer sur App Service

Utilisez un pipeline pour générer une application web PHP et déployer sur Azure App Service. Azure App Service est un service HTTP pour l’hébergement d’applications web, d’API REST et de backends mobiles.

Vous pouvez utiliser des tâches pour archiver vos fichiers, publier un artefact de build, puis utiliser la tâche Azure Web App pour effectuer le déploiement sur Azure App Service.

Ce pipeline comporte deux étapes : Générer et déployer. Dans la phase build, PHP 8.3 est installé avec composer. Les fichiers d’application sont archivés et chargés dans un package nommé drop. Pendant la phase de déploiement, le drop package est déployé sur Azure App Service en tant qu’application 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

Configurer l’environnement de construction

Utilisez Azure Pipelines pour générer vos projets PHP sans configurer l’infrastructure.

Utiliser une version PHP spécifique

PHP est préinstallé sur les agents hébergés par Microsoft, ainsi que de nombreuses bibliothèques courantes par version de PHP. Vous pouvez utiliser des agents Linux, macOS ou Windows pour exécuter vos builds. Pour plus d’informations et les versions exactes de PHP qui sont préinstallées, consultez les agents hébergés par Microsoft.

Sur l’agent Ubuntu hébergé par Microsoft, plusieurs versions de PHP sont installées. Un lien symbolique à /usr/bin/php pointe vers la version PHP actuellement définie, de sorte que lorsque vous exécutez php, la version définie est exécutée.

Pour utiliser une version PHP autre que la valeur par défaut, le lien symbolique peut être pointé vers cette version à l’aide de l’outil update-alternatives . Définissez la version PHP souhaitée en ajoutant l’extrait de code suivant à votre azure-pipelines.yml fichier et modifiez la valeur 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)'

Installer des dépendances

Pour utiliser Composer pour installer des dépendances, ajoutez l’extrait de code suivant à votre azure-pipelines.yml fichier.

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

Tester avec phpunit

Pour exécuter des tests avec phpunit, ajoutez l’extrait de code suivant à votre azure-pipelines.yml fichier.

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

Conserver l’application PHP avec l’enregistrement de build

Pour enregistrer les artefacts de cette build avec l’enregistrement de build, ajoutez l’extrait de code suivant à votre fichier azure-pipelines.yml. Si vous le souhaitez, personnalisez la valeur de rootFolderOrFile pour modifier ce qui est inclus dans l’archive.

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

Utilisation d’un emplacement de compositeur personnalisé

Si votre composer.json se trouve dans un sous-dossier au lieu du répertoire racine, vous pouvez utiliser l’argument --working-dir pour indiquer au compositeur quel répertoire utiliser. Par exemple, si votre fichier composer.json se trouve dans le sous-dossier pkgs

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

Vous pouvez également spécifier le chemin absolu à l’aide des variables système intégrées :

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