Node.js: Implementar com GitHub Actions
Aprenda a implementar o seu código Node.js usando GitHub Actions
👋 Bem-vindo à documentação do Stackhero!
A Stackhero oferece uma solução Node.js 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 preços simples, transparentes e previsíveis.
- Obtenha desempenho ótimo 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 hospedagem cloud Node.js da Stackhero!
O GitHub Actions permite automatizar tarefas como a implementação do seu código Node.js em servidores de produção. Neste guia, vamos orientá-lo sobre como implementar de forma segura e confiável a sua aplicação Node.js em ambientes de staging e produção usando GitHub Actions.
Recomendamos manter duas branches: staging e production. Quando o código é enviado para estas branches, é automaticamente implementado no serviço Stackhero correspondente.
Ter uma instância de staging não é obrigatório. Pode seguir este guia apenas com uma instância de produção. No entanto, para garantir implementações suaves e ganhar confiança antes de entrar em produção, é altamente recomendado manter ambos os ambientes de staging e produção. Esta abordagem é um padrão da indústria que pode ajudar a prevenir problemas comuns de implementação.
Antes de começar, certifique-se de ter uma conta GitHub com um repositório que hospede o seu código.
Criar os serviços Node.js
Primeiro, inicie sessão no seu painel de controlo Stackhero e crie dois serviços Stackhero: um para staging e outro para produção. Para maior clareza, pode nomear estes serviços "Staging" e "Production".
Ainda não tem uma conta Stackhero? Pode criar uma em apenas dois minutos gratuitamente e configurar os seus serviços cloud Node.js em apenas alguns cliques.
Exemplo de serviços Node.js
Configurar chaves SSH
As chaves SSH permitem que o GitHub Actions se conecte de forma segura ao seu serviço Node.js ao implementar o seu código. Este passo é essencial para proteger os seus serviços Stackhero.
No seu computador, gere novas chaves SSH com este comando:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Configurar a chave pública
Recupere a chave pública que acabou de gerar executando:
cat /tmp/ssh_key.pub
Depois, no painel de controlo Stackhero, selecione o seu serviço Node.js de produção e clique no botão Configurar.
Obter configurações do serviço
A seguir:
- Em Chaves públicas SSH, clique em Adicionar uma chave pública.
- Para Descrição, insira
GitHub Action. - Para Chave, cole a chave pública que recuperou.
Obter configurações do serviço
Configurar a chave privada
Aceda ao site do GitHub e abra o repositório do seu projeto. Depois, clique em Settings e selecione Environments. Clique em New environment.
Configurar ambientes GitHub
Insira "production" para o Nome e confirme a sua ação.
Configurar o ambiente
Clique no botão No restriction, depois escolha Selected branches and tags.
Configurar restrições de ambiente
Agora clique em Add deployment branch or tag rule, insira "production" no campo Name pattern, e clique em Add rule.
Configurar a branch de ambiente
Configurar a branch de ambiente
Em seguida, em Environment secrets, clique em Add secret.
Adicionar segredo
Recupere a chave privada que gerou executando:
cat /tmp/ssh_key
No GitHub, insira STACKHERO_SSH_PRIVATE_KEY como Nome e cole a sua chave privada no campo Valor.
Configurar o segredo da chave privada SSH
Depois, em Environment variables, clique em Add variable.
Configurar variáveis
Insira STACKHERO_ENDPOINT como Nome e cole o endpoint do seu serviço Node.js no campo Valor. Pode encontrar este endpoint no seu painel de controlo Stackhero.
Configurar 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, remova as chaves SSH do seu computador assim que as tiver configurado no Stackhero e GitHub:
rm /tmp/ssh_key /tmp/ssh_key.pub
Configurar o workflow do GitHub Actions
Dentro do seu repositório Git, crie um diretório chamado .github/workflows e adicione um ficheiro chamado deploy-to-stackhero.yml.
# Ficheiro: .github/workflows/deploy-to-stackhero.yml
name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero
on:
push:
# Liste as branches que desencadeiam a ação de implementação. Certifique-se de que existe um ambiente no GitHub (em "Settings" > "Environments") para cada branch.
# Depois adicione o segredo correspondente 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:
# STACKHERO_SSH_PRIVATE_KEY e STACKHERO_ENDPOINT devem ser definidos no ambiente GitHub correspondente.
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Após criar o ficheiro de workflow, confirme as suas alterações com os seguintes comandos:
git add -A .
git commit -m "Adicionar GitHub Actions para implementar no Stackhero"
Crie uma branch de produção com:
git checkout -b production
Finalmente, envie as suas alterações para o GitHub:
git push --set-upstream origin production
Este envio envia o seu código para a branch production e aciona o GitHub Actions para implementar o seu código no serviço Stackhero. Para verificar a implementação, navegue até ao seu projeto no GitHub e clique em Actions.
GitHub Actions que implementou em produção
Parabéns! O seu código está agora configurado para implementação automática em produção via GitHub Actions.
Criar o ambiente de staging
Configurar o ambiente de staging é semelhante ao ambiente de produção. Repita os passos acima, substituindo production por staging conforme necessário.
Comece por criar uma branch de staging com:
git checkout -b staging
Depois envie a sua branch de staging para o GitHub:
git push --set-upstream origin staging
O GitHub Actions irá automaticamente implementar a sua branch de staging no serviço Node.js designado.
Indo mais além
É uma boa prática proteger as branches production e staging para evitar envios diretos. Em vez disso, crie um pull request para a branch de staging e faça merge das alterações a partir da sua branch de desenvolvimento. Depois de validar as alterações na plataforma de staging, faça merge do pull request na branch production.
Esta abordagem ajuda a garantir que apenas pessoas autorizadas podem enviar para staging e produção. Também assegura que novas funcionalidades são cuidadosamente testadas antes de serem lançadas.