Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure DevOps Hizmetleri
Bu makalede, BIR PHP web uygulaması oluşturan ve Bunu Azure App Service'e dağıtan Azure Pipelines'da işlem hattı oluşturma adımları gösterilmektedir. App Service, web uygulamalarını, REST API'leri ve mobil arka uçları barındırmaya yönelik HTTP tabanlı bir hizmettir. İşlem hattı, PHP uygulamalarını otomatik olarak derlemek, test etmek ve dağıtmak için GitHub kaynağından sürekli tümleştirmeyi ve App Service'e sürekli teslimi kullanır.
Azure Pipelines, herhangi bir altyapı ayarlamanıza gerek kalmadan PHP projelerinizi oluşturur. PHP, Microsoft tarafından barındırılan aracılara ve PHP sürümleri için birçok ortak kitaplıka önceden yüklenmiştir. Derlemelerinizi çalıştırmak için Linux, macOS veya Windows aracılarını kullanabilirsiniz. Hangi PHP sürümlerinin önceden yüklendiği hakkında daha fazla bilgi için bkz. Yazılım.
Önkoşullar
Kendi örnek GitHub PHP projenizin çatalı https://github.com/Azure-Samples/php-docs-hello-world.
Tip
Örnek proje, PHP'nin varsayılan saat dilimi ayarlarını kullanır. Bu ayarlar, Microsoft tarafından barındırılan aracılarda varsayılan olarak UTC'yi işaret eder. Uygulamanızın belirli bir saat dilimine ihtiyacı varsa PHP saat dilimini ayarlama bölümüne bakın.
Azure App Service'te proje için oluşturulan bir PHP web uygulaması. Hızla bir PHP web uygulaması oluşturmak için bkz. Azure App Service'te PHP web uygulaması oluşturma. Kendi PHP GitHub projenizi ve web uygulamanızı da kullanabilirsiniz.
Ayrıca aşağıdaki önkoşullara da ihtiyacınız vardır:
| Ürün | Gereksinimler |
|---|---|
| Azure DevOps | - Azure DevOps projesi. - Microsoft tarafından barındırılan ajanlarda pipeline'ları çalıştırma yeteneği. Paralel bir iş satın alabilir veya ücretsiz katman isteyebilirsiniz. - YAML ve Azure Pipelines hakkında temel bilgiler. Daha fazla bilgi için bkz. İlk işlem hattınızı oluşturma. - İzinler: - İşlem hattı oluşturmak için Katkıda Bulunanlar grubunda olmanız ve grubun Derleme işlem hattı oluşturma izinlerinin İzin Ver olarak ayarlanması gerekir. Proje Yöneticileri grubunun üyeleri işlem hatlarını yönetebilir. - Hizmet bağlantıları oluşturmak için: |
| GitHub | - GitHub hesabı. - Azure Pipelines'ı yetkilendirmek için bir GitHub hizmet bağlantısı . |
| Azure | Bir Azure aboneliği. |
| Ürün | Gereksinimler |
|---|---|
| Azure DevOps | - Azure DevOps projesi. - Şirket içinde barındırılan bir aracı. Bir aracı oluşturmak için bkz. Kendi kendine barındırılan aracılar. - YAML ve Azure Pipelines hakkında temel bilgiler. Daha fazla bilgi için bkz. İlk işlem hattınızı oluşturma. - İzinler: - İşlem hattı oluşturmak için Katkıda Bulunanlar grubunda olmanız ve grubun Derleme işlem hattı oluşturma izinlerinin İzin Ver olarak ayarlanması gerekir. Proje Yöneticileri grubunun üyeleri işlem hatlarını yönetebilir. - Hizmet bağlantıları oluşturmak için: |
| GitHub | - GitHub hesabı. - Azure Pipelines'ı yetkilendirmek için bir GitHub hizmet bağlantısı . |
| Azure | Bir Azure aboneliği. |
Örnek işlem hattı
Azure işlem hattı şablonunda Linux Web App olarak PHP'yi temel alan aşağıdaki örnek azure-pipelines.yml dosyasının iki aşaması vardır: Build ve .Deploy Aşama Build , PHP 8.2'yi yükler ve ardından proje dosyalarınızı arşivleyip adlı droppakette bir ZIP derleme yapıtı yayımlamak için görevler çalıştırır.
Aşama Deploy başarılı olursa Build aşama çalışır.
drop görevini kullanarak paketi App Service'e dağıtır. İşlem hattınızı oluşturmak için Azure'da Linux Web Uygulaması olarak PHP şablonunu kullandığınızda, oluşturulan işlem hattı yapılandırma ayarlarınıza göre değişkenleri ve diğer değerleri ayarlar ve kullanır.
Uyarı
İşlem hattınızı PHP'den Azure'da Linux Web Appşablonu olarak oluşturursanız ve PHP uygulamanız Composer kullanmıyorsa, kaydedip çalıştırmadan önce oluşturulan işlem hattından aşağıdaki satırları kaldırın. Şablon işlem hattı, composer.json depoda mevcut değilse başarısız olur.
- 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
YAML işlem hattını oluşturma
Örnek işlem hattını oluşturmak ve çalıştırmak için aşağıdaki adımları izleyin:
Azure DevOps projenizde, sol gezinti menüsünden İşlem Hatları'nı ve ardından Yeni işlem hattı'nı veya bu işlem hattı projenin ilk işlem hattıysa İşlem hattı oluştur'u seçin.
Kodunuz nerede sayfasında GitHub'ı seçin.
Depo seçin sayfasında, forklanmış php-docs-hello-world deponuzu seçin.
Azure Pipelines kodu php uygulaması olarak tanır ve İşlem hattınızı yapılandırma sayfasında birkaç işlem hattı şablonu önerir. Bu örnekte Azure'da Linux Web App olarak PHP'yi seçin.
Sonraki ekranda Azure aboneliğinizi seçin ve Devam'ı seçin. Bu eylem, Azure kaynaklarınıza bir hizmet bağlantısı oluşturur.
Sonraki ekranda Azure web uygulamanızı seçin ve Doğrula ve yapılandır'ı seçin. Azure Pipelines bir azure-pipelines.yml dosyası oluşturur ve dosyayı YAML işlem hattı düzenleyicisinde görüntüler.
İşlem hattınızı gözden geçirin YAML ekranında işlem hattınızın kodunu gözden geçirin. Hazır olduğunuzda Kaydet ve çalıştır'ı seçin.
Sonraki ekranda Kaydet'i seçip yeniden çalıştır'ı seçerek yeni azure-pipelines.yml dosyasını deponuza işleyin ve bir CI/CD derlemesi başlatın.
Uyarı
İşlem hattı ilk kez çalıştırıldığında, oluşturduğu ortama erişmek için izin ister. İşlem hattının ortama erişmesine izin vermek için İzin Ver'i seçin.
İşlem hattınızı çalışır durumda izlemek için çalıştırma Özeti sayfasında işi seçin. Çalıştırma tamamlandığında, dağıtılan web uygulamasını görmek için Azure Web App'i Dağıtma adımında App Service Uygulaması URL'si bağlantısını seçin.
URL'ye göz atarak dağıtımın başarılı olduğunu doğrulayın. Örnek uygulamanın Hello World! çıkışını görmeniz gerekir.
İşlem hattını özelleştirme
İşlem hattını düzenlemek için çalıştırma Özeti sayfasının sağ üst kısmındaki Diğer eylemler simgesini seçip ardından İşlem hattını düzenle'yi seçebilirsiniz veya işlem hattının sayfasında sağ üstteki Düzenle'yi seçebilirsiniz. Depoya işlediğiniz her düzenleme yeni bir CI/CD işlem hattını harekete geçiriyor.
İşlem hattını çeşitli yollarla özelleştirebilirsiniz:
Belirli bir PHP sürümünü kullanma
Microsoft tarafından barındırılan Ubuntu aracılarının birden çok PHP sürümü yüklüdür.
/usr/bin/php konumundaki bir symlink geçerli PHP sürümüne işaret eder, bu nedenle komutunu çalıştırdığınızda phpayarlanan sürüm yürütülür.
Varsayılan sürüm dışında bir PHP sürümü kullanmak için update-alternatives komutunu kullanarak bağlambeti istenen sürüme yönlendirin. YAML işlem hattınızda değişkenin phpVersion değerini istediğiniz sürümle değiştirin. Derleme aşamanızın variables ve steps bölümlerine aşağıdaki kod parçacığını ekleyin:
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)'
PHP saat dilimini ayarlama
Microsoft tarafından barındırılan aracılar varsayılan olarak UTC ile çalışır, bu nedenle PHP işlevleri date() ve strtotime() UTC değerlerini döndürür. İşlem hattı betiklerinizde farklı bir saat dilimi kullanmak için ortam değişkenini TZ ayarlayın veya PHP kodunuzu çağırın date_default_timezone_set() .
Aşağıdaki örnek, bir betik adımı için saat dilimini Doğu Saati olarak ayarlar. Bu kod parçacığını derleme işinizin steps bölümüne ekleyin:
- script: |
export TZ='America/New_York'
php -r "date_default_timezone_set('America/New_York'); echo date('Y-m-d H:i:s T');"
displayName: 'Run PHP with Eastern time zone'
Desteklenen saat dilimi tanımlayıcılarının listesi için desteklenen saat dilimlerinin PHP listesine bakın.
Bağımlılıkları yükleme
Bağımlılıkları yüklemek için Composer'ı kullanmak için, derleme işinizin steps bölümüne aşağıdaki kod parçacığını ekleyin:
- script: composer install --no-interaction --prefer-dist
displayName: 'composer install'
composer.json dosyanız kök dizinde değilse, hangi dizinin kullanılacağını belirtmek için bağımsız değişkenini --working-dir kullanın. Örneğin, composer.json/pkgs alt klasöründeyse kullanın composer install --no-interaction --working-dir=pkgs. Ayrıca, yerleşik sistem değişkenini kullanarak mutlak bir yol belirtebilirsiniz: --working-dir='$(System.DefaultWorkingDirectory)/pkgs'.
PHPUnit ile test edin
PHPUnit ile testleri çalıştırmak için önce Oluşturucu ile geliştirme bağımlılığı olarak yükleyin ve ardından çalıştırın. Derleme işinizin steps bölümüne aşağıdaki kod parçacığını ekleyin:
- script: composer require --dev phpunit/phpunit
displayName: 'Install PHPUnit'
- script: vendor/bin/phpunit --log-junit $(Build.StagingDirectory)/test-results.xml
displayName: 'Run tests with PHPUnit'
Derleme kaydıyla PHP artefaktlarını saklama
Derleme nesnelerini derleme kaydıyla kaydetmek için, işlem hattınıza Arşiv Dosyaları görevini ekleyin ve isteğe bağlı olarak rootFolderOrFile değerini ayarlayarak arşivin içeriğini değiştirin.
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
includeRootFolder: false
Troubleshoot
Hizmet bağlantısı hataları
İşlem hattınız dağıtım sırasında yetkilendirme hatasıyla başarısız olursa , Azure Resource Manager hizmet bağlantınızın doğru yapılandırıldığını ve App Service'inize dağıtmak için gerekli izinlere sahip olduğunu doğrulayın.
Composer yükleme hataları
Başarısız olursa composer install ,composer.json dosyanızın çalışma dizininde mevcut olduğunu doğrulayın. Dosya bir alt dizindeyse --working-dir bağımsız değişkenini kullanın. Deponuzda composer.json yoksa, oluşturucu adımını işlem hattından kaldırın.
PHP sürümü kullanılamıyor
gibi update-alternativesbir hatayla başarısız olursano alternatives for php8.x, istenen PHP sürümü aracı görüntüsüne yüklenmez. Kullanılabilir PHP sürümleri için Microsoft tarafından barındırılan aracı yazılım listesini denetleyin.
Dağıtım izni reddedildi
Dağıtım aşaması bir izin hatasıyla başarısız olursa şunları doğrulayın:
- Hizmet bağlantınız App Service kaynağında Katkıda Bulunan rolüne sahiptir.
- İşlem hattının ortama erişme izni vardır. İlk çalıştırmada, sorulduğunda İzin Ver'i seçin.