Aracılığıyla paylaş


PHP uygulamaları oluşturma ve test etme

Azure DevOps Services

PHP projelerinizi derlemek, dağıtmak ve test etmek için Azure Pipelines sürekli tümleştirme ve sürekli teslim (CI/CD) kullanın.

PHP işlem hattı oluşturmayı, örnek bir projeyle işlem hattını Azure App Service'e dağıtmayı ve ortamınızı yapılandırmayı öğrenin.

Azure App Service hakkında daha fazla bilgi edinmek için bkz. Azure App Service'te PHP web uygulaması oluşturma.

Önkoşullar

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

Azure App Service'e dağıtım yapacaksanız bir web uygulaması oluşturmanız gerekir.

Kodu al

GitHub'da dağıtmak istediğiniz bir uygulamanız zaten varsa bu kod için bir işlem hattı oluşturabilirsiniz. Ancak yeni bir kullanıcıysanız örnek kodumuzu kullanarak daha iyi bir başlangıç elde edebilirsiniz. GitHub'da aşağıdaki depoyu çatallayın.

https://github.com/Azure-Samples/basic-php-composer

Bir işlem hattı oluştur

  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  2. İşlem hatları'na gidin ve Yeni işlem hattı'na tıklayın.

  3. Kaynak konumunuzu (GitHub, Azure Repos Git, Bitbucket Cloud veya diğer Git depoları) seçin.

  4. Kodunuzun bulunduğu depoyu seçin.

  5. Yapılandır sekmesinde PHP'yi seçin.

  6. PHP sürümünün 8.3 olduğundan emin olun.

  7. Yeni işlem hattınızı inceleyin. Hazır olduğunuzda Kaydet ve çalıştır'ı seçin.

    Yeni bir YAML işlem hattında kaydet ve çalıştır düğmesi

  8. Deponuza yeni bir azure-pipelines.yml dosyası işlemeniz istenir. Kaydet'e tıklayın ve tekrar çalıştırın.

    İşlem hattınızı çalışırken izlemek istiyorsanız yapı işini seçin.

    Artık deponuzda özelleştirmeniz için hazır çalışan bir YAML işlem hattı (azure-pipelines.yml) var!

İşlem hattınızda değişiklik yapmak istediğinizde İşlem Hatları sayfasında işlem hattınızı seçin ve ardından azure-pipelines.yml dosyasını düzenleyin.

İşlem hattınızı özelleştirmenin en yaygın yollarından bazılarını öğrenmek için daha fazla bilgi edinin.

App Service’e dağıtım yapın

PHP web uygulaması oluşturmak ve Azure App Service'e dağıtmak için işlem hattı kullanın. Azure Uygulaması Hizmeti web uygulamalarını, REST API'leri ve mobil arka uçları barındırmaya yönelik HTTP tabanlı bir hizmettir.

Görevleri kullanarak dosyalarınızı arşivleyebilir, derleme yapıtı yayımlayabilir ve ardından Azure Web App görevini kullanarak Azure App Service'e dağıtabilirsiniz.

Bu boru hattının iki aşaması vardır: Derleme ve Dağıtma. Derleme aşamasında PHP 8.3 oluşturucu ile birlikte yüklenir. Uygulama dosyaları arşivlenir ve dropadlı bir pakete yüklenir. Dağıtım aşamasında, drop paketi Azure App Service'e bir web uygulaması olarak dağıtılır.


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

Derleme ortamını yapılandırma

Altyapıyı ayarlamadan PHP projelerinizi oluşturmak için Azure Pipelines'ı kullanın.

Belirli bir PHP sürümünü kullanma

PHP, Php sürümü başına birçok ortak kitaplıkla birlikte Microsoft tarafından barındırılan aracılara önceden yüklenmiştir. Derlemelerinizi çalıştırmak için Linux, macOS veya Windows aracılarını kullanabilirsiniz. Daha fazla bilgi ve php'nin önceden yüklenmiş tam sürümleri için bkz. Microsoft tarafından barındırılan aracılar.

Microsoft tarafından barındırılan Ubuntu aracısında, PHP'nin birden çok sürümü yüklenir. /usr/bin/php'daki bir symlink, şu anda ayarlanmış PHP sürümünü işaret eder, böylece phpçalıştırdığınızda ayarlanan sürüm yürütülür.

Varsayılan sürüm dışında bir PHP sürümü kullanmak için symlink, update-alternatives aracı kullanılarak bu sürüme işaret edilebilir. Dosyanıza azure-pipelines.yml aşağıdaki kod parçacığını ekleyerek istediğiniz PHP sürümünü ayarlayın ve phpVersion değişkeninin değerini değiştirin.

pool:
  vmImage: 'ubuntu-22.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)'

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'

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 uygulamasını saklama

Bu derlemenin artefaktlarını derleme kaydıyla kaydetmek için aşağıdaki kod parçacığını azure-pipelines.yml adlı dosyanıza ekleyin. İsteğe bağlı olarak, arşive eklenenleri değiştirmek için rootFolderOrFile değerini özelleştirin.

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(system.defaultWorkingDirectory)'
    includeRootFolder: false
- task: PublishBuildArtifacts@1

Özel bir oluşturucu konumu kullanma

composer.json kök dizin yerine bir alt klasördeyse, oluşturucuya hangi dizinin kullanılacağını söylemek için --working-dir bağımsız değişkenini kullanabilirsiniz. Örneğin, composer.json, pkgs alt klasörünün içindeyse

composer install --no-interaction --working-dir=pkgs

Yerleşik sistem değişkenlerini kullanarak mutlak yolu da belirtebilirsiniz:

composer install --no-interaction --working-dir='$(system.defaultWorkingDirectory)/pkgs'