Kompilowanie i testowanie aplikacji PHP
Azure DevOps Services
Użyj usługi Azure Pipelines do ciągłej integracji i ciągłego dostarczania (CI/CD), aby kompilować, wdrażać i testować projekty PHP.
Dowiedz się, jak utworzyć potok PHP, wdrożyć potok przy użyciu przykładowego projektu, aby aplikacja systemu Azure Service i jak skonfigurować środowisko.
Aby dowiedzieć się więcej na temat usługi aplikacja systemu Azure Service, zobacz Tworzenie aplikacji internetowej w języku PHP w usłudze aplikacja systemu Azure Service.
Wymagania wstępne
Upewnij się, że masz:
Konto usługi GitHub, na którym można utworzyć repozytorium. Utwórz je bezpłatnie.
Organizacja: Azure DevOps. Utwórz je bezpłatnie. Jeśli twój zespół już go ma, upewnij się, że jesteś administratorem projektu usługi Azure DevOps, którego chcesz użyć.
Możliwość uruchamiania potoków na agentach hostowanych przez firmę Microsoft. Aby korzystać z agentów hostowanych przez firmę Microsoft, organizacja usługi Azure DevOps musi mieć dostęp do zadań równoległych hostowanych przez firmę Microsoft. Możesz kupić zadanie równoległe lub zażądać bezpłatnej dotacji.
Konto Azure. Jeśli nie masz konta, możesz je utworzyć teraz za darmo.
Napiwek
Jeśli dopiero zaczynasz pracę, najprostszym sposobem rozpoczęcia pracy jest użycie tego samego adresu e-mail co właściciel zarówno organizacji usługi Azure Pipelines, jak i subskrypcji platformy Azure.
- Jeśli zamierzasz wdrożyć usługę aplikacja systemu Azure Service, musisz utworzyć aplikację internetową.
Uzyskiwanie kodu
Jeśli masz już aplikację w usłudze GitHub, którą chcesz wdrożyć, możesz utworzyć potok dla tego kodu. Jeśli jednak jesteś nowym użytkownikiem, możesz zacząć korzystać z naszego przykładowego kodu. W takim przypadku rozwidlenie następującego repozytorium w usłudze GitHub:
https://github.com/Azure-Samples/basic-php-composer
Tworzenie potoku
Zaloguj się do organizacji usługi Azure DevOps i przejdź do projektu.
Przejdź do potoków, a następnie wybierz pozycję Nowy potok.
Wybierz lokalizację źródłową (GitHub, Azure Repos Git, Bitbucket Cloud lub inne repozytoria Git).
Wybierz repozytorium, w którym znajduje się kod.
Wybierz pozycję PHP na karcie Konfigurowanie .
Upewnij się, że wersja PHP to 8.3.
Sprawdź nowy potok. Gdy wszystko będzie gotowe, wybierz pozycję Zapisz i uruchom.
Zostanie wyświetlony monit o zatwierdzenie nowego pliku azure-pipelines.yml do repozytorium. Wybierz pozycję Zapisz i uruchom ponownie.
Jeśli chcesz obserwować działanie potoku, wybierz zadanie kompilacji.
Masz teraz działający potok YAML (azure-pipelines.yml) w repozytorium, który jest gotowy do dostosowania.
Jeśli chcesz wprowadzić zmiany w potoku, wybierz potok na stronie Potoki, a następnie edytuj plik azure-pipelines.yml.
Przeczytaj więcej, aby dowiedzieć się więcej o typowych sposobach dostosowywania potoku.
Wdrażanie do usługi App Service
Użyj potoku, aby utworzyć aplikację internetową PHP i wdrożyć w usłudze aplikacja systemu Azure Service. aplikacja systemu Azure Service to oparta na protokole HTTP usługa do hostowania aplikacji internetowych, interfejsów API REST i zapleczy mobilnych.
Zadania służą do archiwizowania plików, publikowania artefaktu kompilacji, a następnie wdrażania w usłudze aplikacja systemu Azure Service za pomocą zadania aplikacji internetowej platformy Azure.
Ten potok ma dwa etapy: Kompilowanie i wdrażanie. Na etapie kompilacji środowisko PHP 8.3 jest instalowane z kompozytorem. Pliki aplikacji są archiwizowane i przekazywane do pakietu o nazwie drop
. W fazie drop
wdrażania pakiet jest wdrażany w usłudze aplikacja systemu Azure Jako aplikacja internetowa.
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-20.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
Konfigurowanie środowiska kompilacji
Użyj usługi Azure Pipelines do kompilowania projektów PHP bez konfigurowania infrastruktury.
Używanie określonej wersji języka PHP
Język PHP jest wstępnie instalowany na agentach hostowanych przez firmę Microsoft wraz z wieloma typowymi bibliotekami na wersję JĘZYKA PHP. Do uruchamiania kompilacji można użyć agentów systemu Linux, macOS lub Windows. Aby uzyskać więcej informacji i dokładne wersje języka PHP, które są wstępnie zainstalowane, zobacz Agenci hostowani przez firmę Microsoft.
Na agencie z systemem Ubuntu hostowanym przez firmę Microsoft zainstalowano wiele wersji języka PHP. Symlink w /usr/bin/php
punktach aktualnie ustawionej wersji JĘZYKA PHP, tak aby po uruchomieniu php
polecenia jest wykonywana wersja zestawu.
Aby użyć wersji języka PHP innej niż domyślna, można wskazać ten link przy użyciu update-alternatives
narzędzia. Ustaw odpowiednią wersję języka PHP, dodając następujący fragment kodu do azure-pipelines.yml
pliku i zmieniając wartość zmiennej phpVersion .
pool:
vmImage: 'ubuntu-20.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)'
Instalowanie zależności
Aby instalować zależności za pomocą narzędzia Composer, dodaj następujący fragment kodu do azure-pipelines.yml
pliku.
- script: composer install --no-interaction --prefer-dist
displayName: 'composer install'
Testowanie za pomocą narzędzia phpunit
Aby uruchomić testy za pomocą narzędzia phpunit, dodaj następujący fragment kodu do azure-pipelines.yml
pliku.
- script: ./phpunit
displayName: 'Run tests with phpunit'
Zachowaj aplikację PHP przy użyciu rekordu kompilacji
Aby zapisać artefakty tej kompilacji przy użyciu rekordu kompilacji, dodaj następujący fragment kodu do azure-pipelines.yml
pliku.
Opcjonalnie dostosuj wartość rootFolderOrFile , aby zmienić elementy zawarte w archiwum.
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(system.defaultWorkingDirectory)'
includeRootFolder: false
- task: PublishBuildArtifacts@1
Używanie niestandardowej lokalizacji kompozytora
Jeśli composer.json znajduje się w podfolderze zamiast katalogu głównego, możesz użyć argumentu , aby poinformować kompozytora --working-dir
, jakiego katalogu użyć. Jeśli na przykład composer.json znajduje się wewnątrz podfolderu pkgs
composer install --no-interaction --working-dir=pkgs
Możesz również określić ścieżkę bezwzględną przy użyciu wbudowanych zmiennych systemowych:
composer install --no-interaction --working-dir='$(system.defaultWorkingDirectory)/pkgs'