PHP: Implementar com GitHub Actions
Como implementar o seu código PHP utilizando o 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 é uma ferramenta poderosa que permite automatizar workflows, incluindo a implementação do seu código PHP diretamente nos seus servidores de produção. Neste guia, vamos mostrar como pode implementar a sua aplicação PHP de forma segura tanto em ambientes de staging como de produção utilizando o GitHub Actions.
A abordagem recomendada é manter dois ramos no seu repositório: staging e production. Sempre que fizer push de código para estes ramos, este será automaticamente implementado na instância Stackhero correspondente.
Ter uma instância de staging não é obrigatório. No entanto, utilizar instâncias separadas para staging e produção é fortemente recomendado para garantir implementações mais seguras e fiáveis. Esta prática está alinhada com os padrões do setor e ajuda a prevenir potenciais problemas.
Para começar, vai precisar de uma conta GitHub com o seu código PHP alojado num repositório.
Criar os serviços PHP
Primeiro, aceda ao seu dashboard Stackhero e crie dois serviços PHP, um para staging e outro para produção. Para maior clareza, pode renomear estes serviços para "Production" e "Staging".
Se ainda não tem 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 staging
Configurar as chaves SSH
As chaves SSH são o método recomendado para permitir que o GitHub Actions se ligue de forma segura ao seu serviço PHP durante a implementação. Neste guia, irá criar um par de chaves SSH exclusivo para este fim.
Gerar as chaves SSH
Para gerar novas chaves SSH, execute este comando no seu computador:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Definir a chave pública
De seguida, obtenha a chave pública executando:
cat /tmp/ssh_key.pub
Aceda ao seu dashboard Stackhero e selecione o seu serviço PHP "Production". Clique em "Configure" e siga estes passos:
- Em
SSH public keys, clique em "Add a public key". - Defina a
Descriptioncomo "GitHub Action". - Cole a chave pública que acabou de obter no campo
Key.
Obter definições do serviço
Definir a chave privada
Agora, adicione a chave privada ao seu projeto GitHub para que possa ser utilizada durante a implementação:
-
Vá a
Settings, selecioneEnvironmentse clique emNew environment.
Configurar ambientes GitHub -
No campo
Name, introduza "production" e confirme.
Definir o ambiente -
Clique no botão
No restrictione selecioneSelected branches and tags.
Definir restrições do ambiente -
Clique em
Add deployment branch or tag rule, introduza "production" no campoName patterne clique emAdd rule.
Definir ramo do ambiente
Definir ramo do ambiente -
Na secção
Environment secrets, clique emAdd secret.
Adicionar secret
Obtenha a chave privada que gerou anteriormente executando:
cat /tmp/ssh_key
Nas definições de ambiente do GitHub:
-
Em
Name, introduzaSTACKHERO_SSH_PRIVATE_KEYe cole a sua chave privada no campoValue.
Definir o secret da chave privada SSH -
Na secção
Environment variables, clique emAdd variable.
Definir variáveis -
Em
Name, introduzaSTACKHERO_ENDPOINTe cole o endpoint do seu serviço PHP no campoValue. Pode encontrar este endpoint no seu dashboard Stackhero.
Definir a variável endpoint
Se personalizou o nome de domínio do seu serviço, utilize a versão personalizada em vez de <XXXXXX>.stackhero-network.com.
Apagar as chaves geradas
Por motivos de segurança, é aconselhável remover as chaves SSH geradas do seu computador após a configuração:
rm /tmp/ssh_key /tmp/ssh_key.pub
Configurar o workflow do GitHub Actions
Agora vai criar um ficheiro de workflow do GitHub Actions para automatizar as suas implementações. No seu repositório Git, crie uma pasta chamada .github/workflows e adicione um ficheiro chamado deploy-to-stackhero.yml com o seguinte conteúdo:
# File: .github/workflows/deploy-to-stackhero.yml
name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero
on:
push:
# Lista de ramos que irão acionar a ação de deploy após um git push
# Não se esqueça de criar um ambiente correspondente no GitHub (em "Settings" -> "Environments") para cada ramo
# Depois adicione o secret "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 secret "STACKHERO_SSH_PRIVATE_KEY" e a variável "STACKHERO_ENDPOINT" devem estar definidos no ambiente GitHub correspondente (em "Settings" -> "Environments")
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Depois de adicionar este ficheiro, pode confirmar as alterações executando estes comandos no seu terminal:
git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"
Para criar o ramo de produção, pode executar:
git checkout -b production
Depois faça push das alterações para o GitHub:
git push --set-upstream origin production
Isto irá enviar o seu código para o ramo production no GitHub. O GitHub Actions irá então executar automaticamente e implementar o seu código na instância Stackhero associada. Para verificar o estado da implementação, pode aceder ao seu projeto GitHub e clicar em Actions.
GitHub Actions que implementou em produção
Parabéns! O seu projeto está agora configurado para implementação automática em produção utilizando o GitHub Actions.
Criar o ambiente de staging
Pode configurar o seu ambiente de staging da mesma forma que o ambiente de produção. Basta repetir os passos acima, substituindo production por staging onde for apropriado.
Depois de configurar tudo, pode criar o seu ramo de staging assim:
git checkout -b staging
E fazer push para o GitHub:
git push --set-upstream origin staging
O GitHub Actions irá implementar automaticamente o código do seu ramo de staging no serviço PHP que configurou para staging.
Para ir mais longe
Para garantir que a sua aplicação se mantém fiável e segura, é aconselhável proteger os ramos production e staging contra pushes diretos. Pode, por exemplo, definir que as alterações sejam feitas através de pull requests, permitindo que o ramo staging seja revisto e integrado apenas por utilizadores com permissões de implementação. Depois de as alterações serem validadas em staging, os utilizadores autorizados podem integrá-las no ramo production.
Esta abordagem garante que apenas código validado chega à produção e permite-lhe testar novas funcionalidades em staging antes de as disponibilizar em produção, proporcionando maior tranquilidade a si e à sua equipa.