建置及測試 PHP 應用程式
Azure DevOps Services
使用 Azure Pipelines 持續整合和持續傳遞 (CI/CD) 來建置、部署及測試您的 PHP 專案。
瞭解如何建立 PHP 管線、使用範例專案部署管線以 Azure App 服務,以及如何設定環境。
若要深入瞭解 Azure App 服務,請參閱在 Azure App 服務 中建立 PHP Web 應用程式。
必要條件
請確認您擁有以下項目:
您可以在其中建立存放庫的 GitHub 帳戶。 免費建立一個。
Azure DevOps 組織。 免費建立一個。 如果您的小組已有存放庫,則請確定您是要使用的 Azure DevOps 專案的管理員。
能夠在 Microsoft 裝載的代理程式上執行管線。 若要使用 Microsoft 託管的代理程式,Azure DevOps 組織必須能夠存取 Microsoft 託管的平行作業。 您可以購買 平行作業 ,也可以 要求免費授與。
Azure 帳戶。 如果您沒有,可以免費建立一個。
提示
如果您是新手,最簡單的開始使用方式是使用與 Azure Pipelines 組織和 Azure 訂用帳戶擁有者相同的電子郵件位址。
- 如果您要部署至 Azure App 服務,您必須建立 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 服務。 Azure App Service 是 HTTP 型服務,用來裝載 Web 應用程式、REST API 和行動後端。
您可以使用工作來封存盤案、發佈組建成品,然後使用 Azure Web 應用程式工作來部署至 Azure App 服務。
此管線有兩個階段:建置和部署。 在建置階段中,PHP 8.3 會隨撰寫程式一起安裝。 應用程式檔案會封存並上傳至名為的 drop
套件。 在部署階段期間,套件drop
會部署至 Azure App 服務 作為 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 版本,可以使用工具指向該版本 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'