Skapa och testa PHP-appar
Azure DevOps Services
Använd kontinuerlig integrering och kontinuerlig leverans i Azure Pipelines (CI/CD) för att skapa, distribuera och testa dina PHP-projekt.
Lär dig hur du skapar en PHP-pipeline, distribuerar en pipeline med ett exempelprojekt till Azure App Service och hur du konfigurerar din miljö.
Mer information om Azure App Service finns i Skapa en PHP-webbapp i Azure App Service.
Förutsättningar
Se till att du har följande objekt:
Ett GitHub-konto där du kan skapa en lagringsplats. Skapa en kostnadsfritt.
En Azure DevOps-organisation. Skapa en kostnadsfritt. Om ditt team redan har ett kontrollerar du att du är administratör för det Azure DevOps-projekt som du vill använda.
En möjlighet att köra pipelines på Microsoft-värdbaserade agenter. Om du vill använda Microsoft-värdbaserade agenter måste din Azure DevOps-organisation ha åtkomst till Microsoft-värdbaserade parallella jobb. Du kan antingen köpa ett parallellt jobb eller begära ett kostnadsfritt bidrag.
Ett Azure-konto. Om du inte har någon sådan nu kan du skapa en kostnadsfritt.
Dricks
Om du är nybörjare på det här är det enklaste sättet att komma igång att använda samma e-postadress som ägaren till både Azure Pipelines-organisationen och Azure-prenumerationen.
- Om du ska distribuera till Azure App Service måste du ha en webbapp skapad.
Hämta koden
Om du redan har en app på GitHub som du vill distribuera kan du skapa en pipeline för koden. Men om du är en ny användare kan du få en bättre start med hjälp av vår exempelkod. I så fall förgrenar du följande lagringsplats på GitHub:
https://github.com/Azure-Samples/basic-php-composer
Skapa en pipeline
Logga in på din Azure DevOps-organisation och gå till projektet.
Gå till pipelines och välj sedan Ny pipeline.
Välj din källplats (GitHub, Azure Repos Git, Bitbucket Cloud eller andra Git-lagringsplatser).
Välj den lagringsplats där koden finns.
Välj PHP på fliken Konfigurera .
Kontrollera att PHP-versionen är 8.3.
Granska den nya pipelinen. När du är klar väljer du Spara och kör.
Du uppmanas att checka in en ny azure-pipelines.yml fil till lagringsplatsen. Välj Spara och kör igen.
Om du vill se din pipeline i praktiken väljer du byggjobbet.
Nu har du en fungerande YAML-pipeline (azure-pipelines.yml) på lagringsplatsen som är redo att anpassas!
När du vill göra ändringar i pipelinen väljer du din pipeline på sidan Pipelines och redigerar sedan filen azure-pipelines.yml.
Läs vidare för att lära dig några av de vanligaste sätten att anpassa din pipeline.
Distribuera till App Service
Använd en pipeline för att skapa en PHP-webbapp och distribuera till Azure App Service. Azure App Service är en HTTP-baserad tjänst som är värd för webbprogram, REST-API:er och mobila serverdelar.
Du kan använda uppgifter för att arkivera dina filer, publicera en byggartefakt och sedan använda Azure Web App-uppgiften för att distribuera till Azure App Service.
Den här pipelinen har två steg: Skapa och distribuera. I build-fasen installeras PHP 8.3 med composer. Appfilerna arkiveras och laddas upp till ett paket med namnet drop
. Under distributionsfasen drop
distribueras paketet till Azure App Service som en webbapp.
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-20.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
Konfigurera byggmiljö
Använd Azure Pipelines för att skapa DINA PHP-projekt utan att konfigurera infrastruktur.
Använda en specifik PHP-version
PHP är förinstallerat på Microsoft-värdbaserade agenter, tillsammans med många vanliga bibliotek per PHP-version. Du kan använda Linux-, macOS- eller Windows-agenter för att köra dina versioner. Mer information och de exakta versionerna av PHP som förinstalleras finns i Microsoft-värdbaserade agenter.
På den Microsoft-värdbaserade Ubuntu-agenten installeras flera versioner av PHP. En symlink på /usr/bin/php
punkter till den för närvarande angivna PHP-versionen, så att när du kör php
körs den angivna versionen.
Om du vill använda en annan PHP-version än standard kan symlinken pekas på den versionen med hjälp av update-alternatives
verktyget. Ange den PHP-version som du vill använda genom att lägga till azure-pipelines.yml
följande kodfragment i filen och ändra värdet för phpVersion-variabeln .
pool:
vmImage: 'ubuntu-20.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)'
Installera beroenden
Om du vill använda Composer för att installera beroenden lägger du till följande kodfragment i azure-pipelines.yml
filen.
- script: composer install --no-interaction --prefer-dist
displayName: 'composer install'
Testa med phpunit
Om du vill köra tester med phpunit lägger du till följande kodfragment i azure-pipelines.yml
filen.
- script: ./phpunit
displayName: 'Run tests with phpunit'
Behåll PHP-appen med byggposten
Om du vill spara artefakterna i den här versionen med byggposten lägger du till följande kodfragment i azure-pipelines.yml
filen.
Du kan också anpassa värdet för rootFolderOrFile för att ändra vad som ingår i arkivet.
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(system.defaultWorkingDirectory)'
includeRootFolder: false
- task: PublishBuildArtifacts@1
Använda en anpassad kompositörsplats
Om din composer.json finns i en undermapp i stället för rotkatalogen --working-dir
kan du använda argumentet för att tala om för composer vilken katalog som ska användas. Om din composer.json till exempel finns i undermappen pkgs
composer install --no-interaction --working-dir=pkgs
Du kan också ange den absoluta sökvägen med hjälp av de inbyggda systemvariablerna:
composer install --no-interaction --working-dir='$(system.defaultWorkingDirectory)/pkgs'