Bagikan melalui


Membangun dan menguji aplikasi PHP

Azure DevOps

Gunakan integrasi berkelanjutan Azure Pipelines dan pengiriman berkelanjutan (CI/CD) untuk membangun, menyebarkan, dan menguji proyek PHP Anda.

Pelajari cara membuat alur PHP, menyebarkan alur dengan proyek sampel ke Azure App Service, dan cara mengonfigurasi lingkungan Anda.

Untuk mempelajari selengkapnya tentang Azure App Service, lihat Membuat aplikasi web PHP di Azure App Service.

Prasyarat

Pastikan Anda memiliki item berikut:

  • Akun GitHub tempat Anda dapat membuat repositori. Buat akun gratis.

  • Organisasi Azure DevOps. Buat akun gratis. Jika tim Anda sudah memilikinya, pastikan Anda adalah administrator proyek Azure DevOps yang ingin Anda gunakan.

  • Kemampuan untuk menjalankan jaringan alur pada agen yang dihosting Microsoft. Untuk menggunakan agen yang dihosting Microsoft, organisasi Azure DevOps Anda harus memiliki akses ke pekerjaan paralel yang dihosting Microsoft. Anda dapat membeli pekerjaan paralel atau Anda dapat meminta pemberian gratis.

  • Akun Azure. Jika Anda tidak memilikinya, Anda dapat membuatnya secara gratis.

    Tip

    Jika Anda baru dalam hal ini, cara term mudah untuk memulai adalah dengan menggunakan alamat email yang sama dengan pemilik organisasi Azure Pipelines dan langganan Azure.

  • Jika Anda akan menyebarkan ke Azure App Service, Anda harus membuat aplikasi web.

Mendapatkan kode

Jika Anda sudah memiliki aplikasi di GitHub yang ingin Anda sebarkan, Anda dapat membuat alur untuk kode tersebut. Tetapi, jika Anda adalah pengguna baru, Anda mungkin mendapatkan awal yang lebih baik dengan menggunakan kode sampel kami. Dalam hal ini, fork repositori berikut di GitHub:

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

Buat alur

  1. Masuk ke organisasi Azure DevOps Anda dan buka proyek Anda.

  2. Buka alur, lalu pilih Alur baru.

  3. Pilih lokasi sumber Anda (GitHub, Azure Repos Git, Bitbucket Cloud, atau repositori Git lainnya).

  4. Pilih repositori tempat kode Anda berada.

  5. Pilih PHP di tab Konfigurasikan .

  6. Pastikan versi PHP adalah 8.3.

  7. Periksa alur baru Anda. Saat Anda siap, pilih Simpan dan jalankan.

    Tombol Simpan dan jalankan di alur YAML baru

  8. Anda diminta untuk menerapkan file azure-pipelines.yml baru ke repositori Anda. Pilih Simpan dan jalankan lagi.

    Jika Anda ingin menonton alur Anda beraksi, pilih pekerjaan build.

    Anda sekarang memiliki alur YAML yang berfungsi (azure-pipelines.yml) di repositori Anda yang siap untuk Anda sesuaikan!

Saat Anda ingin membuat perubahan pada alur Anda, pilih alur Anda di halaman Alur, lalu Edit file azure-pipelines.yml.

Baca lebih lanjut untuk mempelajari beberapa cara yang lebih umum untuk menyesuaikan alur Anda.

Menyebarkan ke App Service

Gunakan alur untuk membangun aplikasi web PHP dan menyebarkan ke Azure App Service. Azure App Service adalah layanan berbasis HTTP untuk meng-hosting aplikasi web, REST API, dan back-end seluler.

Anda dapat menggunakan tugas untuk mengarsipkan file Anda, menerbitkan artefak build, lalu menggunakan tugas Azure Web App untuk menyebarkan ke Azure App Service.

Alur ini memiliki dua tahap: Build dan Deploy. Pada tahap Build, PHP 8.3 diinstal dengan composer. File aplikasi diarsipkan dan diunggah ke dalam paket bernama drop. Selama fase Sebarkan, paket akan drop disebarkan ke Azure App Service sebagai aplikasi 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-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

Mengonfigurasi lingkungan build

Gunakan Azure Pipelines untuk membangun proyek PHP Anda tanpa menyiapkan infrastruktur.

Menggunakan versi PHP tertentu

PHP telah diinstal sebelumnya pada agen yang dihosting Microsoft, bersama dengan banyak pustaka umum per versi PHP. Anda dapat menggunakan agen Linux, macOS, atau Windows untuk menjalankan build Anda. Untuk informasi selengkapnya dan versi PHP yang tepat yang telah diinstal sebelumnya, lihat Agen yang dihosting Microsoft.

Pada agen Ubuntu yang dihosting Microsoft, beberapa versi PHP diinstal. Symlink pada /usr/bin/php titik ke versi PHP yang saat ini diatur, sehingga saat Anda menjalankan php, versi yang ditetapkan dijalankan.

Untuk menggunakan versi PHP selain default, symlink dapat diacu ke versi tersebut menggunakan alat .update-alternatives Atur versi PHP yang Anda inginkan dengan menambahkan cuplikan berikut ke file Anda azure-pipelines.yml dan ubah nilai variabel phpVersion .

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

Instal dependensi

Untuk menggunakan Composer untuk menginstal dependensi, tambahkan cuplikan berikut ke file Anda azure-pipelines.yml .

- script: composer install --no-interaction --prefer-dist
  displayName: 'composer install'

Uji dengan phpunit

Untuk menjalankan pengujian dengan phpunit, tambahkan cuplikan berikut ke file Anda azure-pipelines.yml .

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

Pertahankan aplikasi PHP dengan catatan build

Untuk menyimpan artefak build ini dengan catatan build, tambahkan cuplikan berikut ke file Anda azure-pipelines.yml . Secara opsional, sesuaikan nilai rootFolderOrFile untuk mengubah apa yang disertakan dalam arsip.

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

Menggunakan lokasi komposer kustom

Jika composer.json Anda berada di subfolder alih-alih direktori akar, Anda dapat menggunakan --working-dir argumen untuk memberi tahu komposer direktori apa yang akan digunakan. Misalnya, jika composer.json Anda berada di dalam subfolder pkgs

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

Anda juga dapat menentukan jalur absolut, menggunakan variabel sistem bawaan:

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