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.

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

  1. Logga in på din Azure DevOps-organisation och gå till projektet.

  2. Välj PHPfliken Konfigurera .

  3. Granska den nya pipelinen. När du är klar väljer du Spara och kör.

    Save and run button in a new YAML pipeline

  4. Du uppmanas att checka in en ny azure-pipelines.yml-fil på 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å din lagringsplats som är redo att anpassas!

När du vill göra ändringar i pipelinen väljer du din pipeline på sidan Pipelines och sedan Redigerafilen 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.

Dessa pipelines har två steg: Skapa och distribuera. I build-fasen installeras PHP 7.4 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-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

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

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 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 kompositören 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'