Compartilhar via


Criar e testar aplicativos PHP

Serviços do Azure DevOps

Use a CI/CD (integração contínua e entrega contínua) do Azure Pipelines para criar, implantar e testar seus projetos php.

Saiba como criar um pipeline php, implantar um pipeline com um projeto de exemplo no Serviço de Aplicativo do Azure e como configurar seu ambiente.

Para saber mais sobre o Serviço de Aplicativo do Azure, consulte Criar um aplicativo Web PHP no Serviço de Aplicativo do Azure.

Pré-requisitos

Produto Requisitos
Azure DevOps - Um projeto do Azure DevOps.
– Capacidade de executar pipelines em agentes hospedados pela Microsoft. Você pode comprar um trabalho paralelo ou solicitar uma camada gratuita.
– Conhecimento básico do YAML e do Azure Pipelines. Para obter mais informações, consulte Criar seu primeiro pipeline.
- Permissões:
     - Para criar um pipeline: você deve estar no grupo Colaboradores e o grupo precisa ter a permissão Criar pipeline de build definida como Permitir. Os membros do grupo Administradores do Projeto podem gerenciar pipelines.
    – Para criar conexões de serviço: você deve ter a função Administrador ou Criador para conexões de serviço.
GitHub - Uma conta do GitHub .
– Uma conexão de serviço do GitHub para autorizar o Azure Pipelines.
Azul Uma assinatura do Azure.
Produto Requisitos
Azure DevOps - Um projeto do Azure DevOps.
- Um agente auto-hospedado. Para criar um, consulte Agentes auto-hospedados.
– Conhecimento básico do YAML e do Azure Pipelines. Para obter mais informações, consulte Criar seu primeiro pipeline.
- Permissões:
    - Para criar um pipeline: você deve estar no grupo Colaboradores e o grupo precisa ter a permissão Criar pipeline de build definida como Permitir. Os membros do grupo Administradores do Projeto podem gerenciar pipelines.
    – Para criar conexões de serviço: você deve ter a função Administrador ou Criador para conexões de serviço.
GitHub - Uma conta do GitHub .
– Uma conexão de serviço do GitHub para autorizar o Azure Pipelines.
Azul Uma assinatura do Azure.

Se você pretende implantar no Serviço de Aplicativo do Azure, precisará criar um aplicativo Web.

Obter o código

Se você já tiver um aplicativo no GitHub que deseja implantar, poderá criar um pipeline para esse código. Mas, se você for um novo usuário, poderá começar melhor usando nosso código de exemplo. Nesse caso, bifurque o seguinte repositório no GitHub:

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

Criar um pipeline

  1. Entre na organização do Azure DevOps e acesse seu projeto.

  2. Acesse os pipelines e selecione Novo pipeline.

  3. Selecione o local de origem (GitHub, Git do Azure Repos, Bitbucket Cloud ou outros repositórios Git).

  4. Selecione o repositório em que o código está localizado.

  5. Selecione PHP na guia Configurar .

  6. Verifique se a versão do PHP é 8.3.

  7. Examine o seu novo pipeline. Ao final, selecione Salvar e executar.

    Botão Salvar e executar em um novo pipeline YAML

  8. Você será solicitado a confirmar um novo arquivo azure-pipelines.yml em seu repositório. Selecione Salvar e executar novamente.

    Se você quiser inspecionar seu pipeline em ação, selecione o trabalho de compilação.

    Agora você tem um pipeline YAML funcional (azure-pipelines.yml) em seu repositório pronto para personalizar!

Quando quiser fazer alterações no pipeline, selecione o pipeline na página Pipelines e edite o arquivo azure-pipelines.yml .

Leia mais para saber algumas das maneiras mais comuns de personalizar seu pipeline.

Implantar no Serviço de Aplicativo

Use um pipeline para criar um aplicativo Web PHP e implantar no Serviço de Aplicativo do Azure. O Serviço de Aplicativo do Azure é um serviço com base em HTTP para hospedagem de aplicativos Web, APIs REST e back-ends móveis.

Você pode usar tarefas para arquivar seus arquivos, publicar um artefato de build e, em seguida, usar a tarefa de aplicativo Web do Azure para implantar no Azure App Service.

Esse pipeline tem dois estágios: Compilar e Implantar. Na etapa de construção, o PHP 8.3 é instalado com o Composer. Os arquivos do aplicativo são arquivados e carregados em um pacote chamado drop. Durante a fase Implantar, o pacote drop é implantado no Serviço de Aplicativo do Azure como um aplicativo 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-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

Configurar o ambiente de build

Use o Azure Pipelines para criar seus projetos php sem configurar a infraestrutura.

Usar uma versão específica do PHP

O PHP é pré-instalado em agentes hospedados pela Microsoft, juntamente com muitas bibliotecas comuns por versão do PHP. Você pode usar agentes linux, macOS ou Windows para executar seus builds. Para obter mais informações e as versões exatas do PHP que são pré-instaladas, consulte agentes hospedados pela Microsoft.

No agente do Ubuntu hospedado pela Microsoft, várias versões do PHP são instaladas. Um symlink em /usr/bin/php aponta para a versão do PHP atualmente configurada, para que, quando você executar php, a versão configurada seja executada.

Para usar uma versão php diferente do padrão, o symlink pode ser apontado para essa versão usando a update-alternatives ferramenta. Defina a versão do PHP desejada adicionando o snippet a seguir ao arquivo azure-pipelines.yml e altere o valor da variável 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)'

Instalar dependências

Para usar o Composer para instalar dependências, adicione o snippet a seguir ao arquivo azure-pipelines.yml .

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

Faça testes com o phpunit

Para executar testes com phpunit, adicione o snippet a seguir ao arquivo azure-pipelines.yml .

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

Manter o aplicativo PHP com o registro de compilação

Para salvar os artefatos desse build com o registro de build, adicione o snippet a seguir ao arquivo azure-pipelines.yml. Opcionalmente, customize o valor de rootFolderOrFile para alterar o que está incluído no arquivo.

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

Usando um local de compositor personalizado

Se o composer.json estiver em uma subpasta em vez do diretório raiz, você poderá usar o --working-dir argumento para informar ao compositor qual diretório usar. Por exemplo, se o composer.json estiver dentro da subpasta pkgs

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

Você também pode especificar o caminho absoluto usando as variáveis internas do sistema:

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