Dela via


Skapa, testa och distribuera PHP-appar

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

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:

  1. 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.

  2. På sidan Var är din kod väljer du GitHub.

  3. På sidan Välj en lagringsplats väljer du din förgrenade php-docs-hello-world-lagringsplats .

  4. 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.

  5. 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.

  6. 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.

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

    Skärmbild som visar knappen Spara och kör i en ny YAML-pipeline.

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

  9. 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