Aracılığıyla paylaş


PHP uygulamaları oluşturma, test etme ve dağıtma

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

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:hizmet bağlantıları için Yönetici veya Oluşturucu rolüne sahip olmanız gerekir.
GitHub - GitHub hesabı.
- Azure Pipelines'ı yetkilendirmek için bir GitHub hizmet bağlantısı .
Gök mavisi 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:hizmet bağlantıları için Yönetici veya Oluşturucu rolüne sahip olmanız gerekir.
GitHub - GitHub hesabı.
- Azure Pipelines'ı yetkilendirmek için bir GitHub hizmet bağlantısı .
Gök mavisi Bir Azure aboneliği.

Uyarı

GitHub kimlik doğrulaması, yetkilendirme veya GitHub kuruluşlarında veya belirli depolarda oturum açma gerektirebilir. Gerekli işlemleri tamamlamak için yönergeleri izleyin. Daha fazla bilgi için bkz. GitHub depolarına erişim.

Örnek işlem hattı

Azure'de Linux Web App olarak PHP işlem hattı şablonunu temel alanazure-pipelines.yml dosyası, Build ve Deploy olmak üzere iki aşamaya sahiptir. 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 çalışır ve 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:

  1. 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.

  2. Kodunuz nerede sayfasında GitHub'ı seçin.

  3. Depo seçin sayfasında, forklanmış php-docs-hello-world deponuzu seçin.

  4. 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.

  5. Sonraki ekranda Azure aboneliğinizi seçin ve Devam'ı seçin. Bu eylem, Azure kaynaklarınıza bir hizmet bağlantısı oluşturur.

  6. 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.

  7. İş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.

    Yeni bir YAML işlem hattında Kaydet ve çalıştır düğmesini gösteren ekran görüntüsü.

  8. 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.

  9. İş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.

İş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ına birden çok PHP sürümü yüklenir. /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 symlink'i istenen sürüme update-alternatives komutunu kullanarak işaret edebilirsiniz. YAML işlem hattınızda değişkenin phpVersion değerini istediğiniz sürümle değiştirin ve aşağıdaki kod parçacığını kullanın:

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

Bağımlılıkları yükleme

Bağımlılıkları yüklemek için Composer'ı kullanmak için azure-pipelines.yml dosyanıza 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 kullanabilirsiniz. Ö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 azure-pipelines.yml dosyanıza aşağıdaki kod parçacığını ekleyin:

- script: ./phpunit
  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