Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure DevOps-tjänster
Den här artikeln visar hur du skapar en pipeline i Azure Pipelines som skapar en PHP-webbapp och distribuerar den till Azure App Service. App Service är en HTTP-baserad tjänst som är värd för webbprogram, REST-API:er och mobila serverdelar. Pipelinen använder kontinuerlig integrering från GitHub-källa och kontinuerlig leverans till App Service för att automatiskt skapa, testa och distribuera PHP-appar.
Azure Pipelines bygger dina PHP-projekt utan att du behöver konfigurera någon infrastruktur. PHP är förinstallerat på Microsoft-hostade agenter, tillsammans med många vanliga bibliotek för olika versioner av PHP. Du kan använda Linux-, macOS- eller Windows-agenter för att köra dina versioner. Mer information om vilka PHP-versioner som är förinstallerade finns i Programvara.
Förutsättningar
Din egen förgrening av GitHub PHP-exempelprojektet på https://github.com/Azure-Samples/php-docs-hello-world.
En PHP-webbapp som skapats för projektet i Azure App Service. Information om hur du snabbt skapar en PHP-webbapp finns i Skapa en PHP-webbapp i Azure App Service. Du kan också använda ditt eget PHP GitHub-projekt och din webbapp.
Du behöver också följande förutsättningar:
| Produkt | Krav |
|---|---|
| Azure DevOps | – Ett Azure DevOps-projekt. – En möjlighet att köra pipelines på Microsoft-hanterade agenter. Du kan antingen köpa ett parallellt jobb eller begära en kostnadsfri nivå. – Grundläggande kunskaper om YAML och Azure Pipelines. Mer information finns i Skapa din första pipeline. - Behörigheter: – Om du vill skapa en pipeline: du måste vara i gruppen Deltagare och gruppen måste ha behörigheten Skapa byggpipeline inställd på Tillåt. Medlemmar i gruppen Projektadministratörer kan hantera pipelines. – För att skapa tjänstanslutningar: Du måste ha rollen Administratör eller Skapare för tjänstanslutningar. |
| GitHub (på engelska) | – Ett GitHub-konto . – En GitHub-tjänstanslutning för att auktorisera Azure Pipelines. |
| Blått | En Azure-prenumeration. |
| Produkt | Krav |
|---|---|
| Azure DevOps | – Ett Azure DevOps-projekt. - En lokalt installerad agent. Information om hur du skapar en finns i Lokalt installerade agenter. – Grundläggande kunskaper om YAML och Azure Pipelines. Mer information finns i Skapa din första pipeline. - Behörigheter: – Om du vill skapa en pipeline: du måste vara i gruppen Deltagare och gruppen måste ha behörigheten Skapa byggpipeline inställd på Tillåt. Medlemmar i gruppen Projektadministratörer kan hantera pipelines. – För att skapa tjänstanslutningar: Du måste ha rollen Administratör eller Skapare för tjänstanslutningar. |
| GitHub (på engelska) | – Ett GitHub-konto . – En GitHub-tjänstanslutning för att auktorisera Azure Pipelines. |
| Blått | En Azure-prenumeration. |
Anmärkning
GitHub kan kräva autentisering, auktorisering eller inloggning till GitHub-organisationer eller specifika lagringsplatser. Följ anvisningarna för att slutföra de processer som krävs. Mer information finns i Åtkomst till GitHub-lagringsplatser.
Exempelpipeline
Följande exempelfil azure-pipelines.yml, som är baserad på mallen PHP som Linux Web App på Azure, har två steg, och Build.
Build Fasen installerar PHP 8.2 och kör sedan uppgifter för att arkivera dina projektfiler och publicera en ZIP-kompileringsartefakt till ett paket med namnet drop.
Fasen Deploy körs när Build fasen lyckas och distribuerar drop paketet till App Service med hjälp av Azure Web App-aktiviteten. När du använder PHP som Linux-webbapp i Azure-mallen för att skapa din pipeline, anger den genererade pipelinen och använder variabler och andra värden baserat på dina konfigurationsinställningar.
Anmärkning
Om du skapar din pipeline från PHP som Linux-webbapp i Azure-mallen och PHP-appen inte använder Composer tar du bort följande rader från den genererade pipelinen innan du sparar och kör den. Mallpipelinen misslyckas i sitt nuvarande tillstånd om composer.json inte finns i lagringsplatsen.
- 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
Skapa YAML-pipelinen
Utför följande steg för att skapa och köra exempelpipelinen:
I ditt Azure DevOps-projekt väljer du Pipelines på den vänstra navigeringsmenyn och väljer sedan Ny pipeline eller Skapa pipeline om den här pipelinen är den första i projektet.
På sidan Var är din kod väljer du GitHub.
På sidan Välj en lagringsplats väljer du din förgrenade php-docs-hello-world-lagringsplats .
Azure Pipelines identifierar koden som en PHP-app och föreslår flera pipelinemallar på sidan Konfigurera din pipeline . I det här exemplet väljer du PHP som Linux-webbapp i Azure.
På nästa skärm väljer du din Azure-prenumeration och väljer Fortsätt. Den här åtgärden skapar en tjänstanslutning till dina Azure-resurser.
På nästa skärm väljer du din Azure-webbapp och väljer Verifiera och konfigurera. Azure Pipelines skapar en azure-pipelines.yml-fil och visar den i YAML-pipelineredigeraren.
På skärmen Granska din pipeline YAML granskar du koden för din pipeline. När du är klar väljer du Spara och kör.
På nästa skärm väljer du Spara och kör igen för att checka in den nya azure-pipelines.yml filen på lagringsplatsen och starta en CI/CD-version.
Anmärkning
Första gången pipelinen körs begär den tillåtelse att komma åt miljön den skapar. Välj Tillåt för att bevilja behörighet för pipelinen för att få åtkomst till miljön.
Om du vill se din pipeline i praktiken, väljer du jobbet på fliken Körning Sammanfattning. När körningen är klar väljer du länken App Service Application URL i steget Distribuera Azure Web App för att se den distribuerade webbappen.
Anpassa pipelinen
Du kan redigera pipelinen genom att välja ikonen Fler åtgärder uppe till höger på sidan Kör sammanfattning och sedan redigera pipeline, eller genom att välja Redigera uppe till höger på pipelinens sida. Varje redigering som du checkar in på lagringsplatsen startar en ny CI/CD-pipelinekörning.
Du kan anpassa pipelinen på flera sätt:
Använda en specifik PHP-version
Flera PHP-versioner finns installerade på Ubuntu-agenter som är värdbaserade av Microsoft. En symlink på /usr/bin/php pekar på den aktuella PHP-versionen, så när du kör phpkörs den angivna versionen.
Om du vill använda en annan PHP-version än standard kan du peka symlänken till önskad version med kommandot update-alternatives . I YAML-pipelinen ändrar du värdet för variabeln phpVersion till den version du vill använda och använder följande kodfragment:
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)'
Installera beroenden
Om du vill använda Composer för att installera beroenden inkluderar du följande kodfragment i filen azure-pipelines.yml :
- script: composer install --no-interaction --prefer-dist
displayName: 'composer install'
Om composer.json filen inte finns i rotkatalogen --working-dir kan du använda argumentet för att ange vilken katalog som ska användas. Om composer.json till exempel finns i undermappen /pkgs använder du composer install --no-interaction --working-dir=pkgs. Du kan också ange en absolut sökväg med hjälp av den inbyggda systemvariabeln: --working-dir='$(System.DefaultWorkingDirectory)/pkgs'.
Testa med PHPUnit
Om du vill köra tester med PHPUnit lägger du till följande kodfragment i din azure-pipelines.yml-fil :
- script: ./phpunit
displayName: 'Run tests with phpunit'
Behåll PHP-artefakterna med byggloggen
För att spara buildens artefakter med build-rapporten inkluderar du uppgiften Arkivfiler i pipelinen och kan anpassa värdet rootFolderOrFile för att ändra vad arkivet innehåller.
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
includeRootFolder: false