Compartilhar via


Criar, testar e implantar aplicativos PHP

Serviços do Azure DevOps

Este artigo mostra como criar um pipeline no Azure Pipelines que cria um aplicativo Web PHP e o implanta no Serviço de Aplicativo do Azure. O Serviço de Aplicativo é um serviço baseado em HTTP para hospedar aplicativos Web, APIs REST e back-ends móveis. O pipeline usa a integração contínua da origem do GitHub e a entrega contínua ao Serviço de Aplicativo para criar, testar e implantar automaticamente aplicativos PHP.

O Azure Pipelines cria seus projetos PHP sem que você precise configurar nenhuma infraestrutura. O PHP é pré-instalado em agentes hospedados pela Microsoft, juntamente com muitas bibliotecas comuns para versões php. Você pode usar agentes linux, macOS ou Windows para executar seus builds. Para obter mais informações sobre quais versões php são pré-instaladas, consulte Software.

Pré-requisitos

Você também precisa dos seguintes 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.

Observação

O GitHub pode exigir autenticação, autorização ou entrada em organizações do GitHub ou repositórios específicos. Siga as instruções para concluir os processos necessários. Para obter mais informações, confira Acesso ao repositórios do GitHub.

Pipeline de exemplo

Arquivo de exemplo azure-pipelines.yml baseado no modelo de pipeline PHP como aplicativo Web Linux no Azure tem dois estágios, Build e Deploy. O Build estágio instala o PHP 8.2 e executa tarefas para arquivar os arquivos do projeto e publicar um artefato de build ZIP em um pacote chamado drop.

O Deploy estágio será executado se o Build estágio for bem-sucedido, e implanta o pacote no drop Serviço de Aplicativo usando a tarefa Aplicativo Web do Azure. Quando você usa o PHP como Aplicativo Web Linux no modelo do Azure para criar seu pipeline, o pipeline gerado define e usa variáveis e outros valores com base nas configurações.

Observação

Se você criar seu pipeline a partir do modelo PHP como Aplicativo Web Linux no Azure, e seu aplicativo PHP não usar o Composer, remova as seguintes linhas do pipeline gerado antes de salvar e executar. O pipeline de modelo falhará como está se composer.json não estiver presente no repositório.

    - script: composer install --no-interaction --prefer-dist
     workingDirectory: $(rootFolder)
     displayName: 'Composer install'
trigger:
- main

variables:
  # Azure Resource Manager service connection
  azureSubscription: 'service-connection-based-on-subscription-id'
  # Web app name
  webAppName: 'my-php-web-app'
  # Agent VM image name
  vmImageName: 'ubuntu-22.04'
  # Environment name
  environmentName: 'my-php-web-app-environment'
  # Root folder where your composer.json file is available.
  rootFolder: $(System.DefaultWorkingDirectory)

stages:
- stage: Build
  displayName: Build stage
  variables:
    phpVersion: '8.2'
  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)'

    - 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

Criar o pipeline YAML

Para criar e executar o pipeline de exemplo, execute as seguintes etapas:

  1. Em seu projeto do Azure DevOps, selecione Pipelines no menu de navegação à esquerda e selecione Novo pipeline ou Criar pipeline se esse pipeline for o primeiro no projeto.

  2. Na página Onde está o código , selecione GitHub.

  3. Na página Selecionar um repositório , selecione o repositório php-docs-hello-world bifurcado.

  4. O Azure Pipelines reconhece o código como um aplicativo PHP e sugere vários modelos de pipeline na página Configurar seu pipeline . Para este exemplo, selecione PHP como Aplicativo Web Linux no Azure.

  5. Na próxima tela, selecione sua assinatura do Azure e selecione Continuar. Essa ação cria uma conexão de serviço com seus recursos do Azure.

  6. Na próxima tela, selecione seu aplicativo Web do Azure e selecione Validar e configurar. O Azure Pipelines cria um arquivo azure-pipelines.yml e o exibe no editor de pipeline do YAML.

  7. Na tela Verificar o YAML do seu pipeline, verifique o código do seu pipeline. Ao final, selecione Salvar e executar.

    Captura de tela que mostra o botão Salvar e executar em um novo pipeline YAML.

  8. Na próxima tela, selecione Salvar e executar novamente para confirmar o novo arquivo azure-pipelines.yml em seu repositório e iniciar um build de CI/CD.

    Observação

    Na primeira vez que o pipeline é executado, ele solicita permissão para acessar o ambiente que ele cria. Selecione Permitir para conceder permissão ao pipeline para acessar o ambiente.

  9. Para observar o pipeline em ação, selecione o trabalho na página Resumo. Quando a execução for concluída, selecione o link URL do Aplicativo do Serviço de Aplicações na etapa Implantar Aplicativo Web do Azure para ver o aplicativo web implantado.

Personalizar o fluxo de trabalho

Você pode editar o pipeline selecionando o ícone Mais ações no canto superior direito na página Executar Resumo e selecionando Editar pipeline ou selecionando Editar no canto superior direito na página do pipeline. Cada edição que você envia para o repositório inicia uma nova execução de pipeline de CI/CD.

Você pode personalizar o pipeline de várias maneiras:

Usar uma versão específica do PHP

Várias versões do PHP são instaladas em agentes do Ubuntu hospedados pela Microsoft. Um symlink em /usr/bin/php aponta para a versão atual do PHP, portanto, quando você executa php, a versão definida é executada.

Para usar uma versão php diferente do padrão, você pode apontar o symlink para a versão desejada usando o update-alternatives comando. No pipeline do YAML, altere o valor da phpVersion variável para a versão desejada e use o seguinte snippet:

variables:
  phpVersion: 8.3

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, inclua o seguinte snippet no arquivo azure-pipelines.yml :

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

Se o arquivocomposer.json não estiver no diretório raiz, você poderá usar o --working-dir argumento para especificar qual diretório usar. Por exemplo, se composer.json estiver na subpasta /pkgs, use composer install --no-interaction --working-dir=pkgs. Você também pode especificar um caminho absoluto usando a variável interna do sistema: --working-dir='$(System.DefaultWorkingDirectory)/pkgs'.

Testar com PHPUnit

Para executar testes com PHPUnit, adicione o seguinte snippet ao arquivo azure-pipelines.yml :

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

Reter os artefatos PHP com o registro de compilação

Para salvar os artefatos do build com o registro de build, inclua a tarefa Arquivar Arquivos em seu pipeline e, opcionalmente, personalize o valor de rootFolderOrFile para alterar o que o arquivo inclui.

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
    includeRootFolder: false