Dela via


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.

  • Om du ska distribuera till Azure App Service måste du ha en webbapp skapad.

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. Gå till pipelines och välj sedan Ny pipeline.

  3. Välj din källplats (GitHub, Azure Repos Git, Bitbucket Cloud eller andra Git-lagringsplatser).

  4. Välj den lagringsplats där koden finns.

  5. Välj PHPfliken Konfigurera .

  6. Kontrollera att PHP-versionen är 8.3.

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

    Knappen Spara och kör i en ny YAML-pipeline

  8. Du uppmanas att checka in en ny azure-pipelines.yml fil till 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å lagringsplatsen som är redo att anpassas!

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

Den här pipelinen har två steg: Skapa och distribuera. I build-fasen installeras PHP 8.3 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-20.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

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

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 din 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 composer 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'