Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Services
In diesem Artikel wird gezeigt, wie Sie eine Pipeline in Azure-Pipelines erstellen, die eine PHP-Web-App erstellt und in Azure App Service bereitstellt. App Service ist ein HTTP-basierter Dienst zum Hosten von Webanwendungen, REST-APIs und mobilen Back-Ends. Die Pipeline verwendet eine kontinuierliche Integration von GitHub-Quelle und kontinuierlicher Übermittlung an App Service, um PHP-Apps automatisch zu erstellen, zu testen und bereitzustellen.
Azure Pipelines erstellt Ihre PHP-Projekte, ohne dass Sie eine Infrastruktur einrichten müssen. PHP wird zusammen mit vielen gängigen Bibliotheken für PHP-Versionen auf von Microsoft gehosteten Agents vorinstalliert. Sie können Linux-, macOS- oder Windows-Agents verwenden, um Ihre Builds auszuführen. Weitere Informationen dazu, welche PHP-Versionen vorinstalliert sind, finden Sie unter Software.
Voraussetzungen
Ihr eigener Fork des GitHub PHP-Beispiel-Projekts unter https://github.com/Azure-Samples/php-docs-hello-world.
Eine PHP-Web-App, die für das Projekt in Azure App Service erstellt wurde. Informationen zum schnellen Erstellen einer PHP-Web-App finden Sie unter Erstellen einer PHP-Web-App in Azure App Service. Sie können auch Ihr eigenes PHP GitHub-Projekt und Web-App verwenden.
Außerdem benötigen Sie die folgenden Voraussetzungen:
| Produkt | Anforderungen |
|---|---|
| Azure DevOps | – Ein Azure DevOps-Projekt. – Eine Möglichkeit zum Ausführen von Pipelines auf von Microsoft gehosteten Agenten. Sie können entweder einen parallelen Auftrag erwerben oder eine kostenlose Stufe anfordern. - Grundkenntnisse in YAML und Azure Pipelines. Weitere Informationen finden Sie unter Erstellen Ihrer ersten Pipeline. - Erlaubnisse: – Um eine Pipeline zu erstellen: Sie müssen sich in der Gruppe Mitwirkende befinden, und die Gruppe muss über die Berechtigung Buildpipeline erstellen auf "Zulassen" festgelegt sein. Mitglieder der Gruppe "Projektadministratoren " können Pipelines verwalten. – Um Dienstverbindungen zu erstellen: Sie müssen über die Rolle "Administrator " oder " Ersteller " für Dienstverbindungen verfügen. |
| GitHub (Englisch) | - Ein GitHub-Konto . – Eine GitHub-Dienstverbindung zum Autorisieren von Azure Pipelines. |
| Azurblau | Ein Azure-Abonnement. |
| Produkt | Anforderungen |
|---|---|
| Azure DevOps | – Ein Azure DevOps-Projekt. – Ein selbst gehosteter Agent. Um einen Agent zu erstellen, siehe selbstgehostete Agenten. - Grundkenntnisse in YAML und Azure Pipelines. Weitere Informationen finden Sie unter Erstellen Ihrer ersten Pipeline. - Erlaubnisse: – Um eine Pipeline zu erstellen: Sie müssen sich in der Gruppe Mitwirkende befinden, und die Gruppe muss über die Berechtigung Buildpipeline erstellen auf "Zulassen" festgelegt sein. Mitglieder der Gruppe "Projektadministratoren " können Pipelines verwalten. – Um Dienstverbindungen zu erstellen: Sie müssen über die Rolle "Administrator " oder " Ersteller " für Dienstverbindungen verfügen. |
| GitHub (Englisch) | - Ein GitHub-Konto . – Eine GitHub-Dienstverbindung zum Autorisieren von Azure Pipelines. |
| Azurblau | Ein Azure-Abonnement. |
Hinweis
GitHub erfordert möglicherweise Authentifizierung, Autorisierung oder Anmeldung bei GitHub-Organisationen oder bestimmten Repositorys. Folgen Sie den Anweisungen, um die erforderlichen Prozesse abzuschließen. Weitere Informationen finden Sie unter Zugriff auf GitHub-Repositorys.
Beispielpipeline
Im folgenden Beispiel der Datei azure-pipelines.yml, die auf der Vorlage PHP als Linux-Web-App auf Azure basiert, gibt es zwei Phasen, Build und Deploy. Die Build Phase installiert PHP 8.2 und führt dann Aufgaben aus, um Ihre Projektdateien zu archivieren und ein ZIP-Buildartefakt in einem Paket mit dem Namen dropzu veröffentlichen.
Die Deploy Phase wird ausgeführt, wenn die Build Phase erfolgreich ist, und stellt das drop Paket mithilfe der Azure Web App-Aufgabe in App Service bereit. Wenn Sie die Vorlage 'PHP als Linux Web App auf Azure' verwenden, um Ihre Pipeline zu erstellen, werden die generierten Pipeline-Sätze, Variablen und andere Werte basierend auf Ihren Konfigurationseinstellungen festgelegt.
Hinweis
Wenn Sie Ihre Pipeline aus dem PHP als Linux Web App auf Azure-Vorlage erstellen und Ihre PHP-App "Composer" nicht verwendet, entfernen Sie die folgenden Zeilen aus der generierten Pipeline, bevor Sie sie speichern und ausführen. Die Vorlagenpipeline schlägt fehl, wenn composer.json im Repository fehlt.
- 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
Erstellen der YAML-Pipeline
Führen Sie die folgenden Schritte aus, um die Beispielpipeline zu erstellen und auszuführen:
Wählen Sie in Ihrem Azure DevOps-Projekt "Pipelines" im linken Navigationsmenü aus, und wählen Sie dann "Neue Pipeline " oder " Pipeline erstellen" aus, wenn diese Pipeline der erste im Projekt ist.
Wählen Sie auf der Seite "Wo ist Ihre Codeseite " die Option "GitHub" aus.
Wählen Sie auf der Seite " Repository auswählen " Ihr verzweigtes php-docs-hello-world-Repository aus.
Azure Pipelines erkennt den Code als PHP-App und schlägt mehrere Pipelinevorlagen auf der Seite "Pipeline konfigurieren" vor. Wählen Sie in diesem Beispiel PHP als Linux Web App in Azure aus.
Wählen Sie auf dem nächsten Bildschirm Ihr Azure-Abonnement und dann "Weiter" aus. Diese Aktion erstellt eine Dienstverbindung mit Ihren Azure-Ressourcen.
Wählen Sie auf dem nächsten Bildschirm Ihre Azure Web App aus, und wählen Sie "Überprüfen und Konfigurieren" aus. Azure Pipelines erstellt eine azure-pipelines.yml Datei und zeigt sie im YAML-Pipeline-Editor an.
Überprüfen Sie auf dem Bildschirm "YAML-Pipeline überprüfen" den Code für Ihre Pipeline. Wenn Sie fertig sind, wählen Sie "Speichern" und "Ausführen" aus.
Wählen Sie auf dem nächsten Bildschirm "Speichern" aus, und führen Sie den Vorgang erneut aus , um die neue azure-pipelines.yml Datei in Ihr Repository zu übernehmen und einen CI/CD-Build zu starten.
Hinweis
Wenn die Pipeline zum ersten Mal ausgeführt wird, fordert sie die Berechtigung für den Zugriff auf die von ihr erstellte Umgebung an. Wählen Sie "Erlauben" aus, um der Pipeline Zugriff auf die Umgebung zu gewähren.
Um Ihre Pipeline in Aktion zu sehen, wählen Sie den Auftrag auf der Seite Zusammenfassung aus. Wenn die Ausführung abgeschlossen ist, wählen Sie den Link App-Dienstanwendungs-URL im Schritt Azure-Web-App bereitstellen aus, um die bereitgestellte Web-App anzuzeigen.
Anpassen der Pipeline
Sie können die Pipeline bearbeiten, indem Sie oben rechts auf der Seite "Zusammenfassung ausführen" das Symbol "Weitere Aktionen" auswählen und dann "Pipeline bearbeiten" auswählen oder oben rechts auf der Pipelineseite "Bearbeiten" auswählen. Jede Änderung, die Sie für das Repository vornehmen, startet eine neue CI/CD-Pipelineausführung.
Sie können die Pipeline auf verschiedene Arten anpassen:
Verwenden einer bestimmten PHP-Version
Mehrere PHP-Versionen werden auf von Microsoft gehosteten Ubuntu-Agents installiert. Ein symlink bei /usr/bin/php verweist auf die aktuelle PHP-Version, sodass die set-Version ausgeführt wird, wenn Sie ausführen php.
Um eine andere PHP-Version als die Standardversion zu verwenden, können Sie den Symlink mit dem update-alternatives Befehl auf die gewünschte Version verweisen. Ändern Sie in Ihrer YAML-Pipeline den Wert der phpVersion Variablen in die gewünschte Version, und verwenden Sie den folgenden Codeausschnitt:
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)'
Installieren von Abhängigkeiten
Um Composer zum Installieren von Abhängigkeiten zu verwenden, fügen Sie den folgenden Codeausschnitt in die datei azure-pipelines.yml ein:
- script: composer install --no-interaction --prefer-dist
displayName: 'composer install'
Wenn sich Ihre composer.json Datei nicht im Stammverzeichnis befindet, können Sie das --working-dir Argument verwenden, um anzugeben, welches Verzeichnis verwendet werden soll. Wenn sich composer.json im Unterordner /pkgs befindet, verwenden Sie composer install --no-interaction --working-dir=pkgs. Sie können auch einen absoluten Pfad mithilfe der integrierten Systemvariable angeben: --working-dir='$(System.DefaultWorkingDirectory)/pkgs'.
Testen mit PHPUnit
Um Tests mit PHPUnit auszuführen, fügen Sie der azure-pipelines.yml Datei den folgenden Codeausschnitt hinzu:
- script: ./phpunit
displayName: 'Run tests with phpunit'
Beibehalten der PHP-Artefakte mit dem Builddatensatz
Um die Artefakte des Builds mit dem Builddatensatz zu speichern, schließen Sie die Aufgabe "Archivdateien " in Ihre Pipeline ein, und passen Sie optional den Wert an rootFolderOrFile , um zu ändern, was das Archiv enthält.
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
includeRootFolder: false