Delen via


PHP-apps bouwen en testen

Azure DevOps Services

Gebruik Continue integratie en continue levering van Azure Pipelines (CI/CD) om uw PHP-projecten te bouwen, implementeren en testen.

Meer informatie over het maken van een PHP-pijplijn, het implementeren van een pijplijn met een voorbeeldproject in Azure App Service en het configureren van uw omgeving.

Zie Een PHP-web-app maken in Azure App Service voor meer informatie over Azure App Service.

Vereiste voorwaarden

Product Eisen
Azure DevOps - Een Azure DevOps-project.
- Een vermogen om pijplijnen uit te voeren op agents die door Microsoft worden gehost. U kunt een parallelle taak aanschaffen of u kunt een gratis laag aanvragen.
- Basiskennis van YAML en Azure Pipelines. Zie Uw eerste pijplijn maken voor meer informatie.
- Machtigingen:
     - Om een pijplijn te maken: moet u zich in de groep Inzenders bevinden en moet de groep de machtiging Maak build-pijplijn ingesteld hebben op Toestaan. Leden van de groep Projectbeheerders kunnen pijplijnen beheren.
    - Als u serviceverbindingen wilt maken: u moet de rol Beheerder of Maker hebben voor serviceverbindingen.
GitHub - Een GitHub-account .
- Een GitHub-serviceverbinding om Azure Pipelines te autoriseren.
Azuur Een Azure-abonnement.
Product Eisen
Azure DevOps - Een Azure DevOps-project.
- Een zelfgehoste agent. Om er een te maken, zie Zelfgehoste agents.
- Basiskennis van YAML en Azure Pipelines. Zie Uw eerste pijplijn maken voor meer informatie.
- Machtigingen:
    - Om een pijplijn te maken: moet u zich in de groep Inzenders bevinden en moet de groep de machtiging Maak build-pijplijn ingesteld hebben op Toestaan. Leden van de groep Projectbeheerders kunnen pijplijnen beheren.
    - Als u serviceverbindingen wilt maken: u moet de rol Beheerder of Maker hebben voor serviceverbindingen.
GitHub - Een GitHub-account .
- Een GitHub-serviceverbinding om Azure Pipelines te autoriseren.
Azuur Een Azure-abonnement.

Als u gaat implementeren in Azure App Service, moet u een web-app hebben gemaakt.

Code ophalen

Als u al een app hebt op GitHub die u wilt implementeren, kunt u een pijplijn voor die code maken. Maar als u een nieuwe gebruiker bent, kunt u beter beginnen met het gebruik van onze voorbeeldcode. In dat geval forkt u de volgende opslagplaats op GitHub:

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

Een pijplijn maken

  1. Meld u aan bij uw Azure DevOps-organisatie en ga naar uw project.

  2. Ga naar pijplijnen en selecteer vervolgens Nieuwe pijplijn.

  3. Selecteer uw bronlocatie (GitHub, Azure Repos Git, Bitbucket Cloud of andere Git-opslagplaatsen).

  4. Selecteer de opslagplaats waar uw code zich bevindt.

  5. Selecteer PHP op het tabblad Configureren .

  6. Zorg ervoor dat de PHP-versie 8.3 is.

  7. Bekijk de nieuwe pijplijn. Wanneer u klaar bent, selecteert u Opslaan en uitvoeren.

    Opslaan en uitvoeren knop in een nieuwe YAML-pijplijn

  8. U wordt gevraagd een nieuw azure-pipelines.yml-bestand door te voeren naar uw opslagplaats. Selecteer Opslaan en opnieuw uitvoeren .

    Als u de pijplijn in actie wilt bekijken, selecteert u de build-job.

    U hebt nu een werkende YAML-pijplijn (azure-pipelines.yml) in uw opslagplaats die u kunt aanpassen.

Wanneer u wijzigingen wilt aanbrengen in uw pijplijn, selecteert u de pijplijn op de pagina Pijplijnen en bewerkt u het azure-pipelines.yml bestand.

Lees verder voor meer informatie over een aantal veelgebruikte manieren om uw pijplijn aan te passen.

Uitrollen naar App Service

Gebruik een pijplijn om een PHP-web-app te bouwen en te implementeren in Azure App Service. Azure App Service is een op HTTP gebaseerde service voor het hosten van webtoepassingen, REST API's en mobiele back-ends.

U kunt taken gebruiken om uw bestanden te archiveren, een build-artefact te publiceren en vervolgens de Azure Web App-taak te gebruiken om te implementeren in Azure App Service.

Deze pijplijn heeft twee fasen: Bouwen en implementeren. In de buildfase wordt PHP 8.3 geïnstalleerd met composer. De app-bestanden worden gearchiveerd en geüpload naar een pakket met de naam drop. Tijdens de implementatiefase wordt het drop pakket als web-app geïmplementeerd in Azure App Service.


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

Build-omgeving configureren

Gebruik Azure Pipelines om uw PHP-projecten te bouwen zonder infrastructuur in te stellen.

Een specifieke PHP-versie gebruiken

PHP is vooraf geïnstalleerd op door Microsoft gehoste agents, samen met veel algemene bibliotheken per PHP-versie. U kunt Linux-, macOS- of Windows-agents gebruiken om uw builds uit te voeren. Zie voor meer informatie en de exacte versies van PHP die vooraf worden geïnstalleerd, Microsoft-gehoste agents.

Op de Door Microsoft gehoste Ubuntu-agent worden meerdere versies van PHP geïnstalleerd. Er is een symlink bij /usr/bin/php die verwijst naar de momenteel ingestelde PHP-versie, zodat deze wordt uitgevoerd wanneer u php uitvoert.

Als u een andere PHP-versie dan de standaardversie wilt gebruiken, kan de symlink worden verwezen naar die versie met behulp van het update-alternatives hulpprogramma. Stel de gewenste PHP-versie in door het volgende codefragment toe te voegen aan uw azure-pipelines.yml bestand en de waarde van de phpVersion-variabele te wijzigen.

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)'

Afhankelijkheden installeren

Als u Composer wilt gebruiken om afhankelijkheden te installeren, voegt u het volgende fragment toe aan uw azure-pipelines.yml bestand.

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

Testen met phpunit

Als u tests wilt uitvoeren met phpunit, voegt u het volgende codefragment toe aan uw azure-pipelines.yml bestand.

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

De PHP-app behouden met de buildrecord

Als u de artefacten van deze build wilt opslaan met de buildrecord, voegt u het volgende fragment toe aan uw azure-pipelines.yml bestand. U kunt desgewenst de waarde van rootFolderOrFile aanpassen om de inhoud in het archief te wijzigen.

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

Een aangepaste locatie voor componisten gebruiken

Als uw composer.json zich in een submap bevindt in plaats van de hoofdmap, kunt u het --working-dir argument gebruiken om aan te geven welke map moet worden gebruikt. Als composer.json zich bijvoorbeeld in de submap pkgs bevindt

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

U kunt ook het absolute pad opgeven met behulp van de ingebouwde systeemvariabelen:

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