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ı, Azure Uygulaması Hizmeti'ne örnek bir projeyle işlem hattı dağıtmayı ve ortamınızı yapılandırmayı öğrenin.

Azure Uygulaması Hizmeti hakkında daha fazla bilgi edinmek için bkz. Azure Uygulaması Hizmetinde PHP web uygulaması oluşturma.

Önkoşullar

Aşağıdaki öğelere sahip olduğunuzdan emin olun:

  • Depo oluşturabileceğiniz bir GitHub hesabı. Ücretsiz bir tane oluşturun.

  • Bir Azure DevOps kuruluşu. Ücretsiz bir tane oluşturun. Ekibinizde zaten varsa kullanmak istediğiniz Azure DevOps projesinin yöneticisi olduğunuzdan emin olun.

  • Microsoft tarafından barındırılan aracılarda işlem hatlarını çalıştırma olanağı. Microsoft tarafından barındırılan aracıları kullanmak için Azure DevOps kuruluşunuzun Microsoft tarafından barındırılan paralel işlere erişimi olmalıdır. Paralel bir satın alabilir veya ücretsiz izin isteyebilirsiniz.

  • Azure hesabı. Kuruluşunuz yoksa şimdi ücretsiz olarak bir tane oluşturabilirsiniz.

    İpucu

    Bu konuda yeniyseniz, kullanmaya başlamanın en kolay yolu hem Azure Pipelines kuruluşunun hem de Azure aboneliğinin sahibiyle aynı e-posta adresini kullanmaktır.

  • Azure Uygulaması Hizmeti'ne dağıtım yapacaksanız bir web uygulaması oluşturmanız gerekir.

Kodu alma

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. Bu durumda GitHub'da aşağıdaki deponun çatalını oluşturun:

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

İşlem hattı oluşturma

  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'i seçin ve yeniden çalıştırın .

    İşlem hattınızın nasıl çalıştığını izlemek istiyorsanız derleme 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ğıtma

PHP web uygulaması oluşturmak ve Azure Uygulaması Hizmeti'ne 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 Uygulaması Hizmeti'ne dağıtabilirsiniz.

Bu işlem 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 adlı dropbir pakete yüklenir. Dağıtım aşamasında paket, drop web uygulaması olarak Azure Uygulaması Hizmetine 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-latest'
  # 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. şu anda ayarlanmış PHP sürümünü işaret eden bir symlink /usr/bin/php , böylece ç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 aracı kullanılarak bu sürüme update-alternatives 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-latest'

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 dosyanıza azure-pipelines.yml 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 dosyanıza azure-pipelines.yml aşağıdaki kod parçacığını ekleyin.

- script: ./phpunit
  displayName: 'Run tests with phpunit'

Derleme kaydıyla PHP uygulamasını koruma

Bu derlemenin yapıtlarını derleme kaydıyla kaydetmek için dosyanıza azure-pipelines.yml aşağıdaki kod parçacığını 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 bağımsız değişkenini --working-dir kullanabilirsiniz. Örneğin, composer.json alt klasörün içindeyse pkgs

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'