Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
Vlastní fork ukázkového projektu GITHub PHP na adrese https://github.com/Azure-Samples/php-docs-hello-world.
Návod
Ukázkový projekt používá výchozí nastavení časového pásma PHP, které je ve výchozím nastavení UTC na agentech hostovaných Microsoftem. Pokud vaše aplikace potřebuje konkrétní časové pásmo, přečtěte si informace o nastavení časového pásma PHP.
Webová aplikace PHP vytvořená pro projekt ve službě Azure App Service Pokud chcete rychle vytvořit webovou aplikaci v PHP, přečtěte si téma Vytvoření webové aplikace v PHP ve službě Azure App Service. Můžete také použít vlastní projekt a webovou aplikaci v PHP GitHubu.
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 |
| GitHub | – Účet GitHubu . – Připojení ke službě GitHub pro autorizaci Azure Pipelines. |
| Azure | 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 |
| GitHub | – Účet GitHubu . – Připojení ke službě GitHub pro autorizaci Azure Pipelines. |
| Azure | Předplatné Azure. |
Příklad kanálu
Následující příklad souboru azure-pipelines.yml, který je založený na šabloně kanálu PHP jako Linux Web App na Azure, obsahuje dvě fáze: 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ě. Balíček je nasazen drop do služby App Service pomocí úlohy Azure Web App. 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:
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.
Na stránce Kde je kódová stránka, vyberte GitHub.
Na stránce Vybrat úložiště vyberte své forkované úložiště php-docs-hello-world .
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.
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.
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.
Na obrazovce Kontrola kanálu YAML zkontrolujte kód kanálu. Až budete připraveni, vyberte Uložit a spustit.
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í.
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.
Ověřte úspěšné nasazení tak, že přejdete na adresu URL. Měl by se zobrazit výstup ukázkové aplikace Hello World! .
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
Agenti Ubuntu hostovaní Microsoftem mají nainstalované více 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í, najeďte pomocí příkazu symlink na požadovanou verzi update-alternatives . V kanálu YAML změňte hodnotu phpVersion proměnné na požadovanou verzi. Přidejte následující fragment kódu do sekcí variables a steps ve fázi sestavení.
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)'
Nastavení časového pásma PHP
Agenti hostovaní Microsoftem mají výchozí hodnotu UTC, takže funkce PHP jako date() a strtotime() vracejí hodnoty UTC. Pokud chcete ve skriptech kanálu použít jiné časové pásmo, nastavte TZ proměnnou prostředí nebo použijte funkci date_default_timezone_set() v kódu PHP.
Následující příklad nastaví časové pásmo na východní čas pro krok skriptu. Přidejte tento fragment kódu do steps části úlohy sestavení:
- script: |
export TZ='America/New_York'
php -r "date_default_timezone_set('America/New_York'); echo date('Y-m-d H:i:s T');"
displayName: 'Run PHP with Eastern time zone'
Seznam podporovaných identifikátorů časového pásma najdete v seznamu PHP podporovaných časových pásmů.
Nainstalujte závislosti
Pokud chcete k instalaci závislostí použít Composer, přidejte do části úlohy sestavení následující fragment kódu steps :
- script: composer install --no-interaction --prefer-dist
displayName: 'composer install'
Pokud váš composer.json soubor není v kořenovém adresáři, zadejte pomocí argumentu --working-dir , který adresář chcete použít. Pokud je například composer.json v podsložce /pkgs, použijte composer install --no-interaction --working-dir=pkgs. Absolutní cestu můžete zadat také pomocí předdefinované systémové proměnné: --working-dir='$(System.DefaultWorkingDirectory)/pkgs'.
Testování pomocí PHPUnit
Pokud chcete spouštět testy s PHPUnit, nejprve ho nainstalujte jako vývojovou závislost s Composerem a pak ho spusťte. Do části úlohy sestavení přidejte následující fragment kódu steps :
- script: composer require --dev phpunit/phpunit
displayName: 'Install PHPUnit'
- script: vendor/bin/phpunit --log-junit $(Build.StagingDirectory)/test-results.xml
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
Řešení potíží
Chyby připojení služby
Pokud váš kanál selže s chybou autorizace během nasazování, ověřte, že je správně nakonfigurované připojení služby Azure Resource Manager a že má požadovaná oprávnění k nasazení do služby App Service.
Selhání instalace nástroje Composer
Pokud composer install selže, ověřte, že je váš souborcomposer.json v pracovním adresáři. Pokud je soubor v podadresáři, použijte --working-dir argument. Pokud composer.json v repozitáři neexistuje, odeberte z pipeline krok Composeru.
Verze PHP není k dispozici
Pokud update-alternatives selže s chybou, například no alternatives for php8.x, požadovaná verze PHP není nainstalovaná na imagi agenta. Projděte si seznam softwaru agenta hostovaného Microsoftem pro dostupné verze PHP.
Oprávnění nasazení bylo odepřeno.
Pokud fáze nasazení selže s chybou oprávnění, ověřte, že:
- Připojení ke službě má v prostředku App Service roli Přispěvatel.
- Pipelina má povolení pro přístup k prostředí. Při prvním spuštění vyberte povolit po zobrazení výzvy.