Crie e teste aplicativos PHP

Serviços de DevOps do Azure

Use a integração contínua e a entrega contínua (CI/CD) 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

Certifique-se de que tem os itens seguintes:

  • Uma conta do GitHub onde você pode criar um repositório. Crie um gratuitamente.

  • Uma organização Azure DevOps. Crie um gratuitamente. Se sua equipe já tiver um, verifique se você é um administrador do projeto DevOps do Azure que deseja usar.

  • Capacidade de executar pipelines em agentes hospedados pela Microsoft. Para usar agentes hospedados pela Microsoft, sua organização do Azure DevOps deve ter acesso a trabalhos paralelos hospedados pela Microsoft. Você pode comprar um trabalho paralelo ou solicitar uma bolsa gratuita.

  • Uma conta do Azure. Se não tiver uma, pode criar uma gratuitamente.

    Gorjeta

    Se você é novo nisso, a maneira mais fácil de começar é usar o mesmo endereço de email que o proprietário da organização do Azure Pipelines e da assinatura do Azure.

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ê é um novo usuário, você pode 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 sua organização do Azure DevOps e vá para o seu projeto.

  2. Selecione PHP na guia Configurar.

  3. Examine seu novo pipeline. Quando estiver pronto, selecione Salvar e executar.

    Save and run button in a new YAML pipeline

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

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

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

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

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

Implementar no Serviço de Aplicações

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 baseado em HTTP para hospedar aplicativos Web, APIs REST e back-ends móveis.

Você pode usar tarefas para arquivar seus arquivos, publicar um artefato de compilação e, em seguida, usar a tarefa do Aplicativo Web do Azure para implantar no Serviço de Aplicativo do Azure.

Esse pipeline tem dois estágios: Build e Deploy. No estágio de compilação, o PHP 7.4 é instalado com o composer. Os arquivos do aplicativo são arquivados e carregados em um pacote chamado drop. Durante a fase Implantação, o pacote é implantado drop 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-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: '7.4'
  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 ambiente de compilação

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 suas compilações. Para obter mais informações e as versões exatas do PHP que são pré-instaladas, consulte Agentes hospedados pela Microsoft.

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

Para usar uma versão do PHP diferente do padrão, o link simbólico pode ser apontado para essa versão usando a update-alternatives ferramenta. Defina a versão do PHP desejada adicionando o seguinte trecho ao seu azure-pipelines.yml arquivo e altere o valor da variável phpVersion .

pool:
  vmImage: 'ubuntu-latest'

variables:
  phpVersion: 7.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 seguinte trecho ao arquivo azure-pipelines.yml .

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

Teste com phpunit

Para executar testes com phpunit, adicione o seguinte trecho ao seu azure-pipelines.yml arquivo.

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

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

Para salvar os artefatos dessa compilação com o registro de compilação, adicione o seguinte trecho ao seu azure-pipelines.yml arquivo. Opcionalmente, personalize 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 dizer ao composer 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 de sistema internas:

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