建置及測試 PHP 應用程式
Azure DevOps Services
使用 Azure Pipelines 持續整合和持續傳遞 (CI/CD) 來建置、部署及測試您的 PHP 專案。
瞭解如何建立 PHP 管線、將具有範例專案的管線部署到 Azure App Service,以及如何設定環境。
若要深入瞭解 Azure App Service,請參閱 在 Azure App Service 中建立 PHP Web 應用程式。
先決條件
請確定您有下列物品:
您可以用來建立存放庫的 GitHub 帳戶。 免費建立一個。
Azure DevOps 組織。 免費建立一個。 如果您的小組已有專案,請確認您是要使用的 Azure DevOps 專案的管理員。
能夠在由 Microsoft 託管的代理程式上執行流水線。 若要使用Microsoft裝載的代理程式,您的 Azure DevOps 組織必須能夠存取Microsoft裝載的平行作業。 您可以購買 平行作業,也可以 申請免費補助。
Azure 帳戶。 如果您沒有,可以免費建立一個。
小提示
如果您是新手,最簡單的開始使用方式是使用與 Azure Pipelines 組織和 Azure 訂用帳戶擁有者相同的電子郵件位址。
- 如果您要部署至 Azure App Service,您必須建立 Webapp。
取得程式碼
如果您已經有想要部署的 GitHub 應用程式,您可以建立該程式代碼的管線。 但是,如果您是新使用者,您可以使用我們的範例程式代碼來取得更好的開端。 在此情況下,請在 GitHub 派生下列存放庫:
https://github.com/Azure-Samples/basic-php-composer
建立管線
登入您的 Azure DevOps 組織並前往您的專案。
前往管線,然後選擇 新增管線。
選取您的來源位置(GitHub、Azure Repos Git、Bitbucket Cloud 或其他 Git 存放庫)。
選取程式代碼所在的存放庫。
在 [設定] 索引標籤中,選取 [PHP]。
確定 PHP 版本為 8.3。
檢查新的管線。 當您準備好時,請選取 [儲存並執行]。
系統會提示您將新的 azure-pipelines.yml 檔案提交至版本庫。 選取 儲存,然後再次執行。
如果您想要監看管線的運作情形,請選取建置作業。
您現在已在存放庫中有一個可運作的 YAML 管線 (azure-pipelines.yml),可供您自定義!
當您想要對管線進行變更時,請在 [管線] 頁面上選取您的管線,接著 編輯azure-pipelines.yml 檔案。
進一步瞭解如何更常見地自定義您的管線。
部署至 App Service
使用管線建置 PHP Web 應用程式並部署至 Azure App Service。 Azure App Service 是 HTTP 型服務,用來裝載 Web 應用程式、REST API 和行動後端。
您可以使用任務來歸檔檔案、發佈建置成品,然後使用 Azure Web 應用程式任務 部署至 Azure App Service。
此管線有兩個階段:建置和部署。 在建置階段中,會使用 Composer 安裝 PHP 8.3。 應用程式檔案會封存並上傳至名為 drop
的套件。 在部署階段期間,drop
套件會部署至 Azure App Service 作為 Web 應用程式。
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
設定建置環境
使用 Azure Pipelines 來建置 PHP 專案,而不需設定基礎結構。
使用特定的 PHP 版本
PHP 會預安裝在 Microsoft 裝載的代理程式上,並包含許多針對每個 PHP 版本的常用函式庫。 您可以使用 Linux、macOS 或 Windows 代理程式來執行組建。 如需預安裝之 PHP 的詳細資訊和確切版本,請參閱 Microsoft 裝載的代理程式。
在Microsoft裝載的Ubuntu代理程式上,會安裝多個版本的 PHP。
/usr/bin/php
的符號連結會指向目前設定的 PHP 版本,因此當您執行 php
時,就會執行目前設定的 PHP 版本。
若要使用預設以外的 PHP 版本,符號連結可以使用 update-alternatives
工具指向該版本。 將下列代碼段新增至 azure-pipelines.yml
檔案,並變更 phpVersion 變數的值,以設定您想要的 PHP 版本。
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)'
安裝依賴項
若要使用 Composer 安裝相依性,請將下列代碼段新增至您的 azure-pipelines.yml
檔案。
- script: composer install --no-interaction --prefer-dist
displayName: 'composer install'
使用 phpunit 進行測試
若要使用 phpunit 執行測試,請將下列代碼段新增至您的 azure-pipelines.yml
檔案。
- script: ./phpunit
displayName: 'Run tests with phpunit'
使用組建記錄保留 PHP 應用程式
若要使用組建記錄儲存此組建的成品,請將下列代碼段新增至您的 azure-pipelines.yml
檔案。
您可以選擇自定義 rootFolderOrFile 的值,以更改封存中包含的內容。
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(system.defaultWorkingDirectory)'
includeRootFolder: false
- task: PublishBuildArtifacts@1
使用自訂撰寫程式位置
如果您的 composer.json 位於子資料夾中,而不是根目錄,您可以使用 --working-dir
自變數來告訴撰寫者要使用的目錄。 例如,如果您的 composer.json 位於 pkgs
子資料夾中
composer install --no-interaction --working-dir=pkgs
您也可以使用內建系統變數來指定絕對路徑:
composer install --no-interaction --working-dir='$(system.defaultWorkingDirectory)/pkgs'