Sdílet prostřednictvím


Vytváření a testování aplikací PHP

Služby Azure DevOps

Pomocí kontinuální integrace a průběžného doručování (CI/CD) v Azure Pipelines můžete vytvářet, nasazovat a testovat projekty PHP.

Zjistěte, jak vytvořit kanál PHP, nasadit kanál s ukázkovým projektem do služby Aplikace Azure Service a jak nakonfigurovat vaše prostředí.

Další informace o službě Aplikace Azure Najdete v tématu Vytvoření webové aplikace PHP ve službě Aplikace Azure Service.

Požadavky

Ujistěte se, že máte následující položky:

  • Účet GitHubu, kde můžete vytvořit úložiště. Vytvořte si ho zdarma.

  • Organizace Azure DevOps. Vytvořte si ho zdarma. Pokud už ho váš tým má, ujistěte se, že jste správcem projektu Azure DevOps, který chcete použít.

  • Možnost spouštět kanály na agentech hostovaných Microsoftem Pokud chcete používat agenty hostované Microsoftem, musí mít vaše organizace Azure DevOps přístup k paralelním úlohům hostovaným Microsoftem. Můžete si buď koupit paralelní úlohu , nebo můžete požádat o bezplatné udělení.

  • Účet Azure. Pokud jej nemáte, můžete si jej zdarma vytvořit.

    Tip

    Pokud s tím začínáte, nejjednodušší způsob, jak začít, je použít stejnou e-mailovou adresu jako vlastník organizace Azure Pipelines i předplatné Azure.

  • Pokud se chystáte nasadit do služby Aplikace Azure Service, musíte mít vytvořenou webovou aplikaci.

Získání kódu

Pokud už máte aplikaci na GitHubu, kterou chcete nasadit, můžete pro tento kód vytvořit kanál. Pokud jste ale nový uživatel, možná získáte lepší začátek používáním našeho ukázkového kódu. V takovém případě forkujte následující úložiště na GitHubu:

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

Vytvořit kanál

  1. Přihlaste se ke své organizaci Azure DevOps a přejděte do svého projektu.

  2. Přejděte do kanálů a pak vyberte Nový kanál.

  3. Vyberte umístění zdroje (GitHub, Azure Repos Git, Bitbucket Cloud nebo jiná úložiště Git).

  4. Vyberte úložiště, ve kterém se nachází váš kód.

  5. Na kartě Konfigurace vyberte PHP.

  6. Ujistěte se, že verze PHP je 8.3.

  7. Prozkoumejte nový kanál. Až budete připraveni, vyberte Uložit a spustit.

    Tlačítko Uložit a spustit v novém kanálu YAML

  8. Zobrazí se výzva k potvrzení nového souboru azure-pipelines.yml do úložiště. Vyberte Uložit a spusťte znovu.

    Pokud chcete sledovat kanál v akci, vyberte úlohu sestavení.

    Teď máte v úložišti funkční kanál YAML (azure-pipelines.yml), který je připravený k přizpůsobení.

Pokud chcete v kanálu udělat změny, vyberte kanál na stránce Pipelines a pak upravte azure-pipelines.yml soubor.

Přečtěte si další informace o některých nejběžnějších způsobech přizpůsobení kanálu.

Nasazení do App Service

Pomocí kanálu sestavte webovou aplikaci PHP a nasaďte ji do služby Aplikace Azure Service. Aplikace Azure Service je služba založená na protokolu HTTP pro hostování webových aplikací, rozhraní REST API a mobilních back-endů.

Úlohy můžete použít k archivaci souborů, publikování artefaktu sestavení a následnému nasazení úlohy webové aplikace Azure do služby Aplikace Azure Service.

Tento kanál má dvě fáze: sestavení a nasazení. Ve fázi sestavení je PHP 8.3 nainstalován se skladatelem. Soubory aplikace se archivují a nahrají do balíčku s názvem drop. Během fáze drop nasazení se balíček nasadí do služby Aplikace Azure Service jako webová aplikace.


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

Konfigurace prostředí sestavení

Pomocí Azure Pipelines můžete vytvářet projekty PHP bez nastavení infrastruktury.

Použití konkrétní verze PHP

PHP je předinstalovaný na agentech hostovaných Microsoftem spolu s mnoha běžnými knihovnami na verzi PHP. Ke spouštění sestavení můžete použít agenty pro Linux, macOS nebo Windows. Další informace a přesné verze PHP, které jsou předinstalované, najdete v tématu Agenti hostovaní Microsoftem.

Na agentu Ubuntu hostovaném Microsoftem se nainstaluje několik verzí PHP. Symlink odkazuje na /usr/bin/php aktuálně nastavenou verzi PHP, takže při spuštění phpse spustí sada verze.

Pokud chcete použít jinou verzi PHP než výchozí, můžete odkazovat na tuto verzi pomocí update-alternatives nástroje. Nastavte požadovanou verzi PHP tak, že do azure-pipelines.yml souboru přidáte následující fragment kódu a změníte hodnotu proměnné phpVersion .

pool:
  vmImage: 'ubuntu-latest'

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

Instalace závislostí

Pokud chcete k instalaci závislostí použít Composer, přidejte do azure-pipelines.yml souboru následující fragment kódu.

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

Testování s phpunit

Pokud chcete spustit testy s phpunit, přidejte do azure-pipelines.yml souboru následující fragment kódu.

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

Zachování aplikace PHP se záznamem buildu

Pokud chcete uložit artefakty tohoto sestavení se záznamem sestavení, přidejte do azure-pipelines.yml souboru následující fragment kódu. Volitelně můžete upravit hodnotu rootFolderOrFile tak, aby změnila, co je součástí archivu.

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

Použití vlastního umístění skladatele

Pokud je váš composer.json v podsložce místo kořenového adresáře, můžete argumentem --working-dir sdělit skladateli, jaký adresář použít. Pokud je například váš composer.json uvnitř podsložky pkgs

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

Absolutní cestu můžete zadat také pomocí předdefinovaných systémových proměnných:

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