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