Freigeben über


Erstellen und Testen von PHP-Apps

Azure DevOps Services

Verwenden Sie azure Pipelines kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD), um Ihre PHP-Projekte zu erstellen, bereitzustellen und zu testen.

Erfahren Sie, wie Sie eine PHP-Pipeline erstellen, eine Pipeline mit einem Beispielprojekt in Azure App Service bereitstellen und wie Sie Ihre Umgebung konfigurieren.

Weitere Informationen zu Azure App Service finden Sie unter Erstellen einer PHP-Web-App in Azure App Service.

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.

Wenn Sie azure App Service bereitstellen möchten, müssen Sie eine Webapp erstellt haben.

Code abrufen

Wenn Sie bereits über eine App auf GitHub verfügen, die Sie bereitstellen möchten, können Sie eine Pipeline für diesen Code erstellen. Wenn Sie aber ein neuer Benutzer sind, erhalten Sie möglicherweise einen besseren Einstieg, indem Sie unseren Beispielcode verwenden. In diesem Fall, erstellen Sie einen "Fork" des folgenden Repositories auf GitHub:

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

Erstellen einer Pipeline

  1. Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und wechseln Sie zu Ihrem Projekt.

  2. Wechseln Sie zu Pipelines, und wählen Sie dann "Neue Pipeline" aus.

  3. Wählen Sie Ihren Quellspeicherort aus (GitHub, Azure Repos Git, Bitbucket Cloud oder andere Git-Repositorys).

  4. Wählen Sie das Repository aus, in dem sich Ihr Code befindet.

  5. Wählen Sie PHP auf der Registerkarte "Konfigurieren" aus .

  6. Stellen Sie sicher, dass die PHP-Version 8.3 ist.

  7. Überprüfen Sie Ihre neue Pipeline. Wenn Sie fertig sind, wählen Sie "Speichern" und "Ausführen" aus.

    Schaltfläche

  8. Sie werden aufgefordert, eine neue azure-pipelines.yml Datei in Ihr Repository zu übernehmen. Wählen Sie Speichern und Ausführen erneut aus.

    Wenn Sie Ihre Pipeline in Betrieb sehen möchten, wählen Sie den Build-Auftrag aus.

    Sie haben nun eine funktionierende YAML-Pipeline (azure-pipelines.yml) in Ihrem Repository, die Sie anpassen können!

Wenn Sie Änderungen an Ihrer Pipeline vornehmen möchten, wählen Sie ihre Pipeline auf der Seite "Pipelines " aus, und bearbeiten Sie dann die azure-pipelines.yml Datei.

Lesen Sie weiter, um einige der gängigeren Möglichkeiten zum Anpassen Ihrer Pipeline zu erfahren.

Bereitstellen in App Service

Verwenden Sie eine Pipeline, um eine PHP-Web-App zu erstellen und in Azure App Service bereitzustellen. Azure App Service ist ein HTTP-basierter Dienst zum Hosten von Webanwendungen, REST-APIs und mobilen Back-Ends.

Sie können Aufgaben verwenden, um Ihre Dateien zu archivieren, ein Buildartefakt zu veröffentlichen und dann die Azure Web App-Aufgabe zum Bereitstellen in Azure App Service zu verwenden.

Diese Pipeline verfügt über zwei Phasen: Erstellen und Bereitstellen. In der Buildphase wird PHP 8.3 mit Composer installiert. Die App-Dateien werden archiviert und in ein Paket mit dem Namen drophochgeladen. Während der Bereitstellungsphase wird das drop Paket als Web-App für Azure App Service bereitgestellt.


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-22.04'
  # 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

Konfigurieren der Buildumgebung

Verwenden Sie Azure Pipelines, um Ihre PHP-Projekte zu erstellen, ohne Infrastruktur einzurichten.

Verwenden einer bestimmten PHP-Version

PHP ist auf von Microsoft gehosteten Agents vorinstalliert, zusammen mit vielen gängigen Bibliotheken pro PHP-Version. Sie können Linux-, macOS- oder Windows-Agents verwenden, um Ihre Builds auszuführen. Weitere Informationen und die genauen Versionen von PHP, die vorinstalliert werden, finden Sie unter von Microsoft gehosteten Agents.

Auf dem von Microsoft gehosteten Ubuntu-Agent werden mehrere Versionen von PHP installiert. Ein Symlink bei /usr/bin/php zeigt auf die aktuell eingestellte PHP-Version, sodass bei der Ausführung von php die festgelegte Version ausgeführt wird.

Um eine andere PHP-Version als die Standardversion zu verwenden, kann der Symlink auf diese Version mit dem update-alternatives Tool verwiesen werden. Legen Sie die gewünschte PHP-Version fest, indem Sie der Datei den folgenden Codeausschnitt azure-pipelines.yml hinzufügen und den Wert der phpVersion-Variablen ändern.

pool:
  vmImage: 'ubuntu-22.04'

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

Installieren von Abhängigkeiten

Um Composer zum Installieren von Abhängigkeiten zu verwenden, fügen Sie der Datei den folgenden Codeausschnitt hinzu azure-pipelines.yml .

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

Testen mit phpunit

Um Tests mit phpunit auszuführen, fügen Sie der Datei den folgenden Codeausschnitt hinzu azure-pipelines.yml .

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

Speichern der PHP-App mit dem Builddatensatz

Um die Artefakte dieses Builds mit der Build-Aufzeichnung zu speichern, fügen Sie den folgenden Codeausschnitt in Ihre azure-pipelines.yml Datei ein. Passen Sie optional den Wert von rootFolderOrFile an, um zu ändern, was im Archiv enthalten ist.

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

Verwenden eines benutzerdefinierten Speicherorts für die Composerdatei

Wenn sich Ihr composer.json in einem Unterordner anstelle des Stammverzeichnisses befindet, können Sie das --working-dir Argument verwenden, um dem Komponisten mitzuteilen, welches Verzeichnis verwendet werden soll. Beispiel für eine „composer.json“-Datei, die sich im Unterordner pkgs befindet:

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

Sie können auch den absoluten Pfad mithilfe der integrierten Systemvariablen angeben:

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