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.

Vereisten

Zorg ervoor dat u over de volgende zaken beschikt:

  • Een GitHub-account waar u een opslagplaats kunt maken. Maak gratis een account.

  • een Azure DevOps-organisatie. Maak gratis een account. Als uw team er al een heeft, controleert u of u een beheerder bent van het Azure DevOps-project dat u wilt gebruiken.

  • Een mogelijkheid om pijplijnen uit te voeren op door Microsoft gehoste agents. Als u door Microsoft gehoste agents wilt gebruiken, moet uw Azure DevOps-organisatie toegang hebben tot door Microsoft gehoste parallelle taken. U kunt een parallelle taak aanschaffen of u kunt een gratis subsidie aanvragen.

  • Een Azure-account. Als u geen account hebt, kunt u er gratis een maken.

    Fooi

    Als u hier nieuw bent, kunt u het eenvoudigst aan de slag met hetzelfde e-mailadres als de eigenaar van zowel de Azure Pipelines-organisatie als het Azure-abonnement.

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 pipeline maken

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

  2. Selecteer PHP op het tabblad Configureren .

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

    Save and run button in a new YAML pipeline

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

    Als u de pijplijn in actie wilt bekijken, selecteert u de buildtaak.

    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 uw pijplijn op de pagina Pijplijnen en bewerkt u vervolgens het bestand azure-pipelines.yml.

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

Implementeren 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 pijplijnen hebben twee fasen: bouwen en implementeren. In de buildfase wordt PHP 7.4 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 geïmplementeerd in Azure-app Service als web-app.


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-latest'
  # 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: '7.4'
  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, door Microsoft gehoste agents.

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

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

variables:
  phpVersion: 7.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 composer te vertellen welke map moet worden gebruikt. Als uw composer.json zich bijvoorbeeld in de submap bevindt pkgs

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'