Sdílet prostřednictvím


Sestavování, testování a nasazování aplikací PHP

Služby Azure DevOps

Tento článek ukazuje, jak vytvořit kanál ve službě Azure Pipelines, který sestaví webovou aplikaci v PHP a nasadí ji do služby Azure App Service. App Service je služba založená na protokolu HTTP pro hostování webových aplikací, rozhraní REST API a mobilních back-endů. Kanál využívá kontinuální integraci ze zdroje GitHubu a průběžného doručování do app Service k automatickému sestavování, testování a nasazování aplikací PHP.

Azure Pipelines sestavuje projekty PHP, aniž byste museli nastavovat žádnou infrastrukturu. PHP je předinstalovaný na agentech hostovaných Microsoftem spolu s mnoha běžnými knihovnami pro verze PHP. Ke spouštění sestavení můžete použít agenty pro Linux, macOS nebo Windows. Další informace o tom, které verze PHP jsou předinstalované, naleznete v tématu Software.

Požadavky

Potřebujete také následující požadavky:

Výrobek Požadavky
Azure DevOps Projekt Azure DevOps.
– Možnost spouštět potrubí na Microsoftem hostovaných agentech. Můžete buď koupit paralelní úlohu, nebo požádat o bezplatnou úroveň.
– Základní znalost YAML a Azure Pipelines. Další informace naleznete v tématu Vytvoření prvního pipeline.
- Oprávnění:
     – Chcete-li vytvořit pipeline: Musíte být ve skupině Přispěvatelé a skupina musí mít oprávnění k vytvoření build pipeline nastavena na hodnotu Povolit. Členové skupiny Správci projektů můžou spravovat kanály.
    - Chcete-li vytvořit připojení služeb: Musíte mít roli Správce nebo Tvůrce pro připojení služeb .
GitHub – Účet GitHubu .
Připojení ke službě GitHub pro autorizaci Azure Pipelines.
Azurový Předplatné Azure.
Výrobek Požadavky
Azure DevOps Projekt Azure DevOps.
- Samostatně hostovaný agent. Chcete-li vytvořit jeden, podívejte se na samo-hostované agenty.
– Základní znalost YAML a Azure Pipelines. Další informace naleznete v tématu Vytvoření prvního pipeline.
- Oprávnění:
    – Chcete-li vytvořit pipeline: Musíte být ve skupině Přispěvatelé a skupina musí mít oprávnění k vytvoření build pipeline nastavena na hodnotu Povolit. Členové skupiny Správci projektů můžou spravovat kanály.
    - Chcete-li vytvořit připojení služeb: Musíte mít roli Správce nebo Tvůrce pro připojení služeb .
GitHub – Účet GitHubu .
Připojení ke službě GitHub pro autorizaci Azure Pipelines.
Azurový Předplatné Azure.

Poznámka:

GitHub může vyžadovat ověřování, autorizaci nebo přihlášení k organizacím GitHubu nebo konkrétním úložištím. Podle pokynů dokončete požadované procesy. Další informace najdete v tématu Přístup k úložištím GitHub.

Příklad kanálu

Následující příklad souboru azure-pipelines.yml, který vychází z potrubí PHP jako Linuxová webová aplikace v Azurešabloně, má dvě fáze, které jsou pojmenovány jako Build a Deploy. Fáze Build nainstaluje PHP 8.2 a potom spustí úkoly pro archivaci souborů projektu a publikuje artefakt sestavení ZIP do balíčku s názvem drop.

Fáze Deploy se spustí, pokud Build fáze proběhne úspěšně a nasadí drop balíček do služby App Service pomocí úlohy Webové aplikace Azure . Když k vytvoření kanálu použijete šablonu PHP jako webovou aplikaci pro Linux v Azure, vygenerovaný kanál nastaví a použije proměnné a další hodnoty na základě vašich konfiguračních nastavení.

Poznámka:

Pokud vytvoříte kanál z PHP jako linuxové webové aplikace všabloně Azure a vaše aplikace PHP nepoužívá Composer, odeberte z vygenerovaného kanálu následující řádky, než ho uložíte a spustíte. Kanál šablony selže, pokud není v úložišti přítomen composer.json.

    - script: composer install --no-interaction --prefer-dist
     workingDirectory: $(rootFolder)
     displayName: 'Composer install'
trigger:
- main

variables:
  # Azure Resource Manager service connection
  azureSubscription: 'service-connection-based-on-subscription-id'
  # Web app name
  webAppName: 'my-php-web-app'
  # Agent VM image name
  vmImageName: 'ubuntu-22.04'
  # Environment name
  environmentName: 'my-php-web-app-environment'
  # Root folder where your composer.json file is available.
  rootFolder: $(System.DefaultWorkingDirectory)

stages:
- stage: Build
  displayName: Build stage
  variables:
    phpVersion: '8.2'
  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)'

    - 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

Vytvoření kanálu YAML

Pokud chcete vytvořit a spustit ukázkový kanál, proveďte následující kroky:

  1. V projektu Azure DevOps vyberte kanály z levé navigační nabídky a pak vyberte Nový kanál nebo Vytvořit kanál , pokud je tento kanál první v projektu.

  2. Na stránce Kde je kódová stránka, vyberte GitHub.

  3. Na stránce Vybrat úložiště vyberte své forkované úložiště php-docs-hello-world .

  4. Azure Pipelines rozpozná kód jako aplikaci PHP a navrhne několik šablon kanálů na stránce Konfigurace kanálu . V tomto příkladu vyberte PHP jako linuxovou webovou aplikaci v Azure.

  5. Na další obrazovce vyberte své předplatné Azure a vyberte Pokračovat. Tato akce vytvoří připojení služby k vašim prostředkům Azure.

  6. Na další obrazovce vyberte webovou aplikaci Azure a vyberte Ověřit a nakonfigurovat. Azure Pipelines vytvoří soubor azure-pipelines.yml a zobrazí ho v editoru kanálů YAML.

  7. Na obrazovce Kontrola kanálu YAML zkontrolujte kód kanálu. Až budete připraveni, vyberte Uložit a spustit.

    Snímek obrazovky znázorňující tlačítko Uložit a spustit v novém kanálu YAML

  8. Na další obrazovce vyberte Uložit a spusťte znovu a potvrďte nový soubor azure-pipelines.yml do úložiště a spusťte sestavení CI/CD.

    Poznámka:

    Při prvním spuštění pipeline požádá o povolení pro přístup k prostředí, které vytvoří. Vyberte Povolit udělit oprávnění pro kanál pro přístup k prostředí.

  9. Pokud chcete sledovat aktivitu pipeline, vyberte úlohu na stránce Souhrn běhu. Po dokončení spuštění vyberte odkaz URL aplikace služby App Service v kroku Nasazení webové aplikace Azure a zobrazte nasazenou webovou aplikaci.

Přizpůsobit tok dat

Můžete upravit potrubí výběrem ikony Další akce v pravém horním rohu na stránce Souhrn spuštění a následným výběrem možnosti Upravit potrubí nebo výběrem možnosti Upravit v pravém horním rohu na stránce potrubí. Každá úprava, kterou potvrdíte do úložiště, zahájí nový běh pipeline CI/CD.

Pipeline můžete přizpůsobit několika způsoby:

Použití konkrétní verze PHP

Na agentech Ubuntu hostovaných Microsoftem se instaluje několik verzí PHP. Symlink v /usr/bin/php odkazuje na aktuální verzi PHP, takže při spuštění phpse spustí nastavená verze.

Pokud chcete použít jinou verzi PHP než výchozí, můžete pomocí příkazu odkazovat na požadovanou verzi update-alternatives . V kanálu YAML změňte hodnotu phpVersion proměnné na požadovanou verzi a použijte následující fragment kódu:

variables:
  phpVersion: 8.3

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

Nainstalujte závislosti

Pokud chcete použít Nástroj Composer k instalaci závislostí, vložte do souboru azure-pipelines.yml následující fragment kódu:

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

Pokud váš composer.json soubor není v kořenovém adresáři, můžete pomocí argumentu --working-dir určit, jaký adresář se má použít. Pokud je například composer.json v podsložce /pkgs, použijte composer install --no-interaction --working-dir=pkgs. Můžete také zadat absolutní cestu pomocí předdefinované systémové proměnné: --working-dir='$(System.DefaultWorkingDirectory)/pkgs'.

Testování pomocí PHPUnit

Pokud chcete spouštět testy s PHPUnit, přidejte do souboru azure-pipelines.yml následující fragment kódu:

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

Zachování artefaktů PHP pomocí záznamu buildu

Pokud chcete uložit artefakty sestavení se záznamem sestavení, zahrňte do pipeliny úlohu Archivovat soubory a volitelně upravte hodnotu rootFolderOrFile, aby změnila obsah archivu.

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
    includeRootFolder: false