次の方法で共有


PHP アプリのビルドとテスト

Azure DevOps Services

Azure Pipelines の継続的インテグレーションと継続的デリバリー (CI/CD) を使用して、PHP プロジェクトをビルド、デプロイ、テストします。

PHP パイプラインを作成する方法、サンプル プロジェクトを含むパイプラインを Azure App Service にデプロイする方法、環境を構成する方法について説明します。

Azure App Service の詳細については、Azure App Service での PHP Web アプリの作成に関するページを参照してください。

[前提条件]

製品 必要条件
Azure DevOps - Azure DevOps プロジェクト
- Microsoft がホストするエージェントでパイプラインを実行する機能。 並列ジョブを購入することも、Free レベルを要求することもできます。
- YAML と Azure Pipelines に関する基本的な知識。 詳細については、「最初の パイプラインを作成する」を参照してください
- 権限:
     - パイプラインを作成するには、 共同作成者 グループに含まれている必要があり、グループには [ ビルド パイプラインの作成 ] アクセス許可が [許可] に設定されている必要があります。 プロジェクト管理者グループのメンバーは、パイプラインを管理できます。
    - サービス接続を作成するには、サービス接続の管理者ロールまたは作成者ロールが必要です。
GitHub - GitHub アカウント。
- Azure Pipelines を承認するための GitHub サービス接続
紺碧 Azure サブスクリプション
製品 必要条件
Azure DevOps - Azure DevOps プロジェクト
- セルフホステッド エージェント。 作成するには、 セルフホステッド エージェントに関するページを参照してください。
- YAML と Azure Pipelines に関する基本的な知識。 詳細については、「最初の パイプラインを作成する」を参照してください
- 権限:
    - パイプラインを作成するには、 共同作成者 グループに含まれている必要があり、グループには [ ビルド パイプラインの作成 ] アクセス許可が [許可] に設定されている必要があります。 プロジェクト管理者グループのメンバーは、パイプラインを管理できます。
    - サービス接続を作成するには、サービス接続の管理者ロールまたは作成者ロールが必要です。
GitHub - GitHub アカウント。
- Azure Pipelines を承認するための GitHub サービス接続
紺碧 Azure サブスクリプション

Azure App Service にデプロイする場合は、Web アプリを作成する必要があります。

コードを取得する

デプロイするアプリが GitHub に既にある場合は、そのコードのパイプラインを作成できます。 ただし、新しいユーザーの場合は、サンプル コードを使用して、より良いスタートを切ることができます。 その場合は、GitHub で次のリポジトリをフォークします。

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

パイプラインを作成する

  1. Azure DevOps 組織にサインインし、プロジェクトに移動します。

  2. パイプラインに移動し、[ 新しいパイプライン] を選択します。

  3. ソースの場所 (GitHub、Azure Repos Git、Bitbucket Cloud、またはその他の Git リポジトリ) を選択します。

  4. コードが配置されているリポジトリを選択します。

  5. [構成] タブで PHP 選択します。

  6. PHP バージョンが 8.3 であることを確認します。

  7. 新しいパイプラインを調べます。 準備ができたら、[ 保存して実行] を選択します。

    新しい YAML パイプラインの [保存して実行] ボタン

  8. 新しい azure-pipelines.yml ファイルをリポジトリにコミットするように求められます。 [ 保存] を選択して 、もう一度実行します。

    パイプラインの動作を観察する場合は、ビルド ジョブを選びます。

    これで、リポジトリに作業用の YAML パイプライン (azure-pipelines.yml) が作成され、カスタマイズする準備ができました。

パイプラインを変更する場合は、[パイプライン] ページでパイプラインを選択し、azure-pipelines.yml ファイルを編集します。

パイプラインをカスタマイズする一般的な方法の一部については、こちらをご覧ください。

App Service にデプロイする

パイプラインを使用して PHP Web アプリを構築し、Azure App Service にデプロイします。 Azure App Service は、Web アプリケーション、REST API、およびモバイル バックエンドをホストするための HTTP ベースのサービスです。

タスクを使用してファイルをアーカイブし、ビルド成果物を発行してから、 Azure Web App タスク を使用して Azure App Service にデプロイできます。

このパイプラインには、ビルドとデプロイの 2 つのステージがあります。 ビルド ステージでは、PHP 8.3 が composer と共にインストールされます。 アプリ ファイルはアーカイブされ、 dropという名前のパッケージにアップロードされます。 デプロイ フェーズ中に、 drop パッケージが Web アプリとして Azure App Service にデプロイされます。


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

ビルド環境を構成する

Azure Pipelines を使用して、インフラストラクチャを設定せずに PHP プロジェクトをビルドします。

特定の PHP バージョンを使用する

PHP は、 MICROSOFT がホストするエージェントにプレインストールされており、PHP バージョンごとに多くの一般的なライブラリがインストールされています。 Linux、macOS、または Windows エージェントを使用してビルドを実行できます。 プレインストールされる PHP の詳細と正確なバージョンについては、 Microsoft がホストするエージェントに関するページを参照してください。

Microsoft がホストする Ubuntu エージェントには、複数のバージョンの PHP がインストールされています。 /usr/bin/phpのシンボリック リンクは、現在設定されている PHP バージョンを指しているため、phpを実行すると、設定されたバージョンが実行されます。

既定以外の PHP バージョンを使用するには、 update-alternatives ツールを使用してシンボリック リンクをそのバージョンに指定できます。 次のスニペットを azure-pipelines.yml ファイルに追加して、必要な PHP バージョンを設定し、 phpVersion 変数の値を変更します。

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

依存関係のインストール

Composer を使用して依存関係をインストールするには、次のスニペットを azure-pipelines.yml ファイルに追加します。

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

phpunit を使用してテストする

phpunit でテストを実行するには、次のスニペットを azure-pipelines.yml ファイルに追加します。

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

ビルド レコードを使用して PHP アプリを保持する

ビルド レコードを使用してこのビルドの成果物を保存するには、 azure-pipelines.yml ファイルに次のスニペットを追加します。 必要に応じて、 rootFolderOrFile の値をカスタマイズして、アーカイブに含まれる内容を変更します。

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

カスタムコンポーザーの場所を使用する

composer.json がルート ディレクトリではなくサブフォルダーにある場合は、 --working-dir 引数を使用して、使用するディレクトリを composer に指示できます。 たとえば、composer.json がサブフォルダー内にある場合 pkgs

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

組み込みのシステム変数を使用して、絶対パスを指定することもできます。

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