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.
Criar os serviços 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 staging
Configurar chaves SSH
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.
Gerar chaves SSH
Pode gerar novas chaves SSH executando o seguinte comando no seu computador:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Definir a chave pública
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:
- Sob
SSH public keys, clique em "Add a public key". - Defina a
Descriptionpara "GitHub Action". - Cole a chave pública recuperada no campo
Key.
Obter configurações do serviço
Definir a chave privada
Agora, abra o seu projeto GitHub e siga estes passos para configurar a chave privada para implementação:
-
Clique em
Settings, depoisEnvironmentse selecioneNew environment.
Configurar ambientes GitHub -
No campo
Name, insira "production" e confirme.
Definir o ambiente -
Clique no botão
No restrictione selecioneSelected branches and tags.
Definir restrições de ambiente -
Clique em
Add deployment branch or tag rule, insira "production" no campoName pattern, e clique emAdd rule.
Definir a branch de ambiente
Definir a branch de ambiente -
Sob
Environment secrets, clique emAdd secret.
Adicionar segredo
Recupere a chave privada que gerou anteriormente executando:
cat /tmp/ssh_key
Nas configurações de ambiente do GitHub:
-
Em
Name, insiraSTACKHERO_SSH_PRIVATE_KEYe cole a sua chave privada no campoValue.
Definir o segredo da chave privada SSH -
Na seção
Environment variables, clique emAdd variable.
Definir variáveis -
Em
Name, insiraSTACKHERO_ENDPOINTe cole o endpoint do serviço PHP no campoValue. Pode encontrar este endpoint no seu painel de controlo Stackhero.
Definir 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.
Apagar as chaves geradas
Por razões de segurança, deve agora remover as chaves SSH geradas do seu computador:
rm /tmp/ssh_key /tmp/ssh_key.pub
Configurar o workflow do GitHub Actions
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ção
Parabéns, agora está configurado para implementar automaticamente o seu código em produção usando GitHub Actions!
Criar o ambiente de staging
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.
Indo mais além
É 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.