Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure DevOps Services
Cet article explique comment créer un pipeline dans Azure Pipelines qui génère une application web PHP et le déploie sur Azure App Service. App Service est un service HTTP pour l’hébergement d’applications web, d’API REST et de back-ends mobiles. Le pipeline utilise l’intégration continue de la source GitHub et de la livraison continue à App Service pour générer, tester et déployer automatiquement des applications PHP.
Azure Pipelines génère vos projets PHP sans avoir à configurer une infrastructure. PHP est préinstallé sur les agents hébergés par Microsoft, ainsi que de nombreuses bibliothèques courantes pour les versions de PHP. Vous pouvez utiliser des agents Linux, macOS ou Windows pour exécuter vos builds. Pour plus d’informations sur les versions PHP préinstallées, consultez Software.
Conditions préalables
Votre propre duplication de l’exemple de projet PHP GitHub à l’adresse https://github.com/Azure-Samples/php-docs-hello-world.
Une application web PHP créée pour le projet dans Azure App Service. Pour créer rapidement une application web PHP, consultez Créer une application web PHP dans Azure App Service. Vous pouvez également utiliser votre propre projet GitHub PHP et votre application web.
Vous avez également besoin des prérequis suivants :
| 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. |
Note
GitHub peut nécessiter une authentification, une autorisation ou une connexion à des organisations GitHub ou à des référentiels spécifiques. Suivez les instructions pour terminer les processus requis. Pour plus d’informations, consultez Accès aux référentiels GitHub.
Exemple de pipeline
Le fichier d'exemple suivant azure-pipelines.yml basé sur le modèle de pipeline PHP en tant qu'application web Linux sur Azure comporte deux étapes, Build et Deploy. L’étape Build installe PHP 8.2, puis exécute des tâches pour archiver vos fichiers projet et publier un artefact de build ZIP dans un package nommé drop.
L’étape Deploy s’exécute si l’étape Build réussit et déploie le drop package sur App Service à l’aide de la tâche Azure Web App . Lorsque vous utilisez le modèle PHP en tant qu'application web Linux sur Azure pour créer votre pipeline, le pipeline généré définit et utilise des variables et d'autres valeurs en fonction de vos paramètres de configuration.
Note
Si vous créez votre pipeline à partir de PHP en tant qu’application web Linux sur un modèle Azure et que votre application PHP n’utilise pas Composer, supprimez les lignes suivantes du pipeline généré avant de l’enregistrer et de l’exécuter. Le pipeline de modèle échoue dans l'état actuel si composer.json n'est pas présent dans le dépôt.
- script: composer install --no-interaction --prefer-dist
workingDirectory: $(rootFolder)
displayName: 'Composer install'
trigger:
- main
variables:
# Azure Resource Manager service connection
azureSubscription: 'service-connection-based-on-subscription-id'
# Web app name
webAppName: 'my-php-web-app'
# Agent VM image name
vmImageName: 'ubuntu-22.04'
# Environment name
environmentName: 'my-php-web-app-environment'
# Root folder where your composer.json file is available.
rootFolder: $(System.DefaultWorkingDirectory)
stages:
- stage: Build
displayName: Build stage
variables:
phpVersion: '8.2'
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)'
- 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
Créer le pipeline YAML
Pour créer et exécuter l’exemple de pipeline, procédez comme suit :
Dans votre projet Azure DevOps, sélectionnez Pipelines dans le menu de navigation de gauche, puis sélectionnez Nouveau pipeline ou Créer un pipeline si ce pipeline est le premier dans le projet.
Dans la page Où se trouve votre code , sélectionnez GitHub.
Dans la page Sélectionner un référentiel , sélectionnez votre dépôt php-docs-hello-world forked.
Azure Pipelines reconnaît le code en tant qu’application PHP et suggère plusieurs modèles de pipeline sur la page Configurer votre pipeline . Pour cet exemple, sélectionnez PHP en tant qu’application web Linux sur Azure.
Dans l’écran suivant, sélectionnez votre abonnement Azure et sélectionnez Continuer. Cette action crée une connexion de service à vos ressources Azure.
Dans l’écran suivant, sélectionnez votre application web Azure, puis sélectionnez Valider et configurer. Azure Pipelines crée un fichier azure-pipelines.yml et l’affiche dans l’éditeur de pipeline YAML.
Dans l’écran Vérifier votre YAML de pipeline, passez en revue le code de votre pipeline. Lorsque vous êtes prêt, sélectionnez Enregistrer et exécuter.
Dans l’écran suivant, sélectionnez Enregistrer et réexécuter pour valider le nouveau fichier azure-pipelines.yml dans votre dépôt et démarrer une build CI/CD.
Note
La première fois que le pipeline s’exécute, il demande l’autorisation d’accéder à l’environnement qu’il crée. Sélectionnez Autoriser pour permettre au pipeline d’accéder à l’environnement.
Pour la surveillance de votre pipeline en action, sélectionnez la tâche sur la page Résumé de l’exécution. Une fois l’exécution terminée, sélectionnez le lien URL de l’application App Service dans l’étape Déployer l’application web Azure pour afficher l’application web déployée.
Personnaliser le pipeline
Vous pouvez modifier le pipeline en sélectionnant l’icône Autres actions en haut à droite de la page Résumé de l’exécution, puis en sélectionnant Modifier le pipeline, ou en sélectionnant Modifier en haut à droite de la page du pipeline. Chaque modification que vous validez dans le référentiel lance une nouvelle exécution de pipeline CI/CD.
Vous pouvez personnaliser le pipeline de plusieurs façons :
Utiliser une version PHP spécifique
Plusieurs versions PHP sont installées sur les agents Ubuntu hébergés par Microsoft. Un lien symbolique sur /usr/bin/php pointe vers la version actuelle de PHP. Par conséquent, lorsque vous exécutez php, la version définie s’exécute.
Pour utiliser une version PHP autre que la version par défaut, vous pouvez pointer le lien symbolique vers la version souhaitée à l’aide de la update-alternatives commande. Dans votre pipeline YAML, remplacez la valeur de la phpVersion variable par la version souhaitée et utilisez l’extrait de code suivant :
variables:
phpVersion: 8.3
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 les dépendances, incluez l’extrait de code suivant dans votre fichier azure-pipelines.yml :
- script: composer install --no-interaction --prefer-dist
displayName: 'composer install'
Si votre fichier composer.json n’est pas dans le répertoire racine, vous pouvez utiliser l’argument pour spécifier le --working-dir répertoire à utiliser. Par exemple, si composer.json se trouve dans le sous-dossier /pkgs, utilisez composer install --no-interaction --working-dir=pkgs. Vous pouvez également spécifier un chemin absolu à l’aide de la variable système intégrée : --working-dir='$(System.DefaultWorkingDirectory)/pkgs'.
Tester avec PHPUnit
Pour exécuter des tests avec PHPUnit, ajoutez l’extrait de code suivant à votre fichier azure-pipelines.yml :
- script: ./phpunit
displayName: 'Run tests with phpunit'
Conserver les artefacts PHP avec l’enregistrement de compilation
Pour enregistrer les artefacts du build avec l’enregistrement du build, incluez la tâche Fichiers d’archivage dans votre pipeline et personnalisez éventuellement la valeur de rootFolderOrFile pour modifier le contenu de l’archive.
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
includeRootFolder: false