PHP: Implementar com GitHub Actions

Como implementar o seu código PHP usando GitHub Actions

👋 Bem-vindo à documentação do Stackhero!

Stackhero oferece uma solução PHP cloud pronta a usar que proporciona uma série de benefícios, incluindo:

  • Implemente a sua aplicação em segundos com um simples git push.
  • Utilize o seu próprio nome de domínio e beneficie da configuração automática de certificados HTTPS para uma segurança reforçada.
  • Desfrute de tranquilidade com backups automáticos, atualizações com um clique, e uma tarifação simples, transparente e previsível.
  • Obtenha performance ótima e segurança robusta graças a uma VM privada e dedicada.

Poupe tempo e simplifique a sua vida: só leva 5 minutos para experimentar a solução de PHP cloud hosting do Stackhero!

O GitHub Actions facilita a automação de tarefas como a implementação do seu código PHP em servidores de produção. Neste guia, será orientado sobre como implementar com segurança a sua aplicação PHP em ambientes de staging e produção usando GitHub Actions.

A abordagem envolve manter duas branches, staging e production. O código enviado para estas branches é automaticamente implementado na instância correspondente do Stackhero.

Ter uma instância de staging não é obrigatório. No entanto, é fortemente recomendado usar instâncias de staging e produção para garantir implementações suaves e maior confiança ao implementar em produção. Esta prática está alinhada com os padrões da indústria e ajuda a prevenir potenciais problemas.

Para seguir este guia, precisa de uma conta GitHub que hospede o seu repositório de código PHP.

Comece por iniciar sessão no seu painel de controlo Stackhero e criar dois serviços PHP: um para staging e outro para produção. Para manter a organização, renomeie estes serviços para "Production" e "Staging".

Se não tiver uma conta Stackhero, pode criar uma gratuitamente em apenas dois minutos e configurar os seus serviços cloud PHP com alguns cliques.

Exemplo de serviços de produção e stagingExemplo de serviços de produção e staging

As chaves SSH são essenciais para permitir que o GitHub Actions se conecte com segurança ao seu serviço PHP para implementação. Neste guia, irá criar um par de chaves SSH único dedicado a este propósito.

Pode gerar novas chaves SSH executando o seguinte comando no seu computador:

ssh-keygen -C "" -f /tmp/ssh_key -N ""

Recupere a chave pública executando:

cat /tmp/ssh_key.pub

Em seguida, aceda ao seu painel de controlo Stackhero. Selecione o seu serviço PHP "Production" e clique em "Configure". Depois siga estes passos:

  1. Sob SSH public keys, clique em "Add a public key".
  2. Defina a Description para "GitHub Action".
  3. Cole a chave pública recuperada no campo Key.

Obter configurações do serviçoObter configurações do serviço

Agora, abra o seu projeto GitHub e siga estes passos para configurar a chave privada para implementação:

  • Clique em Settings, depois Environments e selecione New environment.

    Configurar ambientes GitHubConfigurar ambientes GitHub

  • No campo Name, insira "production" e confirme.

    Definir o ambienteDefinir o ambiente

  • Clique no botão No restriction e selecione Selected branches and tags.

    Definir restrições de ambienteDefinir restrições de ambiente

  • Clique em Add deployment branch or tag rule, insira "production" no campo Name pattern, e clique em Add rule.

    Definir a branch de ambienteDefinir a branch de ambiente Definir a branch de ambienteDefinir a branch de ambiente

  • Sob Environment secrets, clique em Add secret.

    Adicionar segredoAdicionar segredo

Recupere a chave privada que gerou anteriormente executando:

cat /tmp/ssh_key

Nas configurações de ambiente do GitHub:

  • Em Name, insira STACKHERO_SSH_PRIVATE_KEY e cole a sua chave privada no campo Value.

    Definir o segredo da chave privada SSHDefinir o segredo da chave privada SSH

  • Na seção Environment variables, clique em Add variable.

    Definir variáveisDefinir variáveis

  • Em Name, insira STACKHERO_ENDPOINT e cole o endpoint do serviço PHP no campo Value. Pode encontrar este endpoint no seu painel de controlo Stackhero.

    Definir a variável de endpointDefinir a variável de endpoint

Se personalizou o nome de domínio do seu serviço, use a versão personalizada em vez de xxxxxx.stackhero-network.com.

Por razões de segurança, deve agora remover as chaves SSH geradas do seu computador:

rm /tmp/ssh_key /tmp/ssh_key.pub

Em seguida, irá configurar um workflow do GitHub Actions para automatizar as suas implementações. No seu repositório Git, crie um diretório chamado .github/workflows e adicione um ficheiro chamado deploy-to-stackhero.yml com o seguinte conteúdo:

# Ficheiro: .github/workflows/deploy-to-stackhero.yml

name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero

on:
  push:
    # Lista de branches que irão acionar a ação de implementação após um push git
    # Não se esqueça de criar um ambiente correspondente no GitHub (em "Settings" -> "Environments") para cada branch
    # Depois adicione o segredo "STACKHERO_SSH_PRIVATE_KEY" e a variável "STACKHERO_ENDPOINT" nesse ambiente
    branches: [ "production", "staging" ]

jobs:
  Deploy:
    environment: ${{ github.ref_name }}
    runs-on: ubuntu-latest
    steps:
    - uses: stackhero-io/github-actions-deploy-to-stackhero@v1
      with:
        # O segredo "STACKHERO_SSH_PRIVATE_KEY" e a variável "STACKHERO_ENDPOINT" devem ser definidos no ambiente GitHub correspondente (em "Settings" -> "Environments")
        ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
        endpoint: ${{ vars.STACKHERO_ENDPOINT }}

Após adicionar o ficheiro, confirme as suas alterações executando os seguintes comandos no seu terminal:

git add -A .
git commit -m "Adicionar GitHub Actions para implementar no Stackhero"

Depois, crie uma branch de produção executando:

git checkout -b production

Finalmente, envie as suas alterações para o GitHub:

git push --set-upstream origin production

Este comando envia o seu código para a branch production do GitHub. O GitHub Actions então executa automaticamente e implementa o seu código na instância associada do Stackhero. Para verificar a implementação, visite o seu projeto GitHub e clique em Actions.

GitHub Actions que implementou em produçãoGitHub Actions que implementou em produção

Parabéns, agora está configurado para implementar automaticamente o seu código em produção usando GitHub Actions!

Pode configurar o ambiente de staging usando um processo semelhante ao do ambiente de produção. Basta repetir os passos acima, substituindo production por staging onde aplicável.

Uma vez configuradas as definições, crie uma branch de staging executando:

git checkout -b staging

Depois, envie as suas alterações para o GitHub:

git push --set-upstream origin staging

O GitHub Actions implementa automaticamente o código da branch staging no serviço PHP designado para staging.

É uma boa prática proteger as branches production e staging para evitar envios diretos. Pode considerar criar um pull request para a branch staging que é revisado e fundido apenas por indivíduos com direitos de implementação. Uma vez que as alterações são validadas no ambiente de staging, os utilizadores autorizados podem fundir o pull request na branch production.

Seguir esta abordagem aumenta a segurança garantindo que apenas alterações aprovadas são implementadas e melhora a fiabilidade testando novas funcionalidades num ambiente de staging antes de chegarem à produção.