Node.js: Implementar com GitHub Actions
Saiba como implementar o seu código Node.js utilizando 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 facilita a automatização de tarefas como a implementação do seu código Node.js em servidores de produção. Neste guia, vamos mostrar-lhe como pode implementar de forma segura e fiável a sua aplicação Node.js em ambientes de staging e produção utilizando o GitHub Actions.
Recomendamos que mantenha dois ramos: staging e production. Sempre que fizer push de código para um destes ramos, as suas alterações são automaticamente implementadas no serviço Stackhero correspondente.
Ter uma instância de staging é opcional. Pode seguir este guia utilizando apenas uma instância de produção. Para tornar os deployments mais fluidos e ganhar confiança antes de colocar em produção, é altamente recomendado manter ambientes de staging e produção. Esta abordagem é amplamente adotada no setor e ajuda a evitar problemas comuns de deployment.
Antes de começar, certifique-se de que tem uma conta GitHub e um repositório que aloje o seu código Node.js.
Criar os serviços Node.js
Primeiro, inicie sessão no seu dashboard Stackhero e crie dois serviços Stackhero: um para staging e outro para produção. Para maior clareza, pode nomear estes serviços como "Staging" e "Production".
Se ainda não tem uma conta Stackhero, pode criar uma gratuitamente em apenas dois minutos e configurar os seus serviços cloud Node.js em poucos cliques.
Exemplo de serviços Node.js
Configurar as chaves SSH
As chaves SSH permitem que o GitHub Actions se ligue de forma segura ao seu serviço Node.js durante o deployment do seu código. Este é um passo fundamental para proteger os seus serviços Stackhero.
No seu computador, pode gerar novas chaves SSH com:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Definir a chave pública
Para visualizar a chave pública que acabou de criar, execute:
cat /tmp/ssh_key.pub
De seguida, no seu dashboard Stackhero, selecione o seu serviço Node.js de produção e clique no botão Configure.
Obter definições do serviço
Continue com estes passos:
- Em SSH public keys, clique em Add a public key.
- Em Description, introduza
GitHub Action. - Em Key, cole a chave pública que copiou anteriormente.
Obter definições do serviço
Definir a chave privada
Agora, aceda ao GitHub e abra o repositório do seu projeto. Clique em Settings e depois selecione Environments. Escolha New environment.
Configurar ambientes no GitHub
Introduza "production" em Name e confirme.
Definir o ambiente
Clique no botão No restriction e depois escolha Selected branches and tags.
Definir restrições do ambiente
Agora clique em Add deployment branch or tag rule, introduza "production" no campo Name pattern e clique em Add rule.
Definir ramo do ambiente
Definir ramo do ambiente
Em Environment secrets, clique em Add secret.
Adicionar secret
Para obter a chave privada que gerou, execute:
cat /tmp/ssh_key
No GitHub, utilize STACKHERO_SSH_PRIVATE_KEY como Name e cole a sua chave privada no campo Value.
Definir o secret da chave privada SSH
Depois, em Environment variables, clique em Add variable.
Definir variáveis
Introduza STACKHERO_ENDPOINT como Name e cole o endpoint do seu serviço Node.js no campo Value. Pode encontrar este endpoint no seu dashboard Stackhero.
Definir a variável endpoint
Se definiu um domínio personalizado para o seu serviço, utilize o seu domínio personalizado em vez de <XXXXXX>.stackhero-network.com.
Apagar as chaves geradas
Por motivos de segurança, é aconselhável remover as chaves SSH do seu computador depois de as configurar no Stackhero e no GitHub:
rm /tmp/ssh_key /tmp/ssh_key.pub
Configurar o workflow do GitHub Actions
No seu repositório Git, crie uma pasta .github/workflows caso ainda não exista. Depois, adicione um ficheiro chamado deploy-to-stackhero.yml:
# File: .github/workflows/deploy-to-stackhero.yml
name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero
on:
push:
# Liste os ramos que desencadeiam a ação de deployment. Certifique-se de que existe um ambiente no GitHub (em "Settings" > "Environments") para cada ramo.
# Depois adicione o secret STACKHERO_SSH_PRIVATE_KEY e a variável STACKHERO_ENDPOINT correspondentes 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 respetivo ambiente do GitHub.
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Depois de criar o ficheiro de workflow, pode submeter as suas alterações assim:
git add -A .
git commit -m "Adicionar GitHub Actions para deploy no Stackhero"
Para criar um ramo de produção, execute:
git checkout -b production
Depois faça push das suas alterações para o GitHub:
git push --set-upstream origin production
Este push envia o seu código para o ramo production e aciona o GitHub Actions para implementar o seu código no serviço Stackhero. Para confirmar o deployment, abra o seu projeto no GitHub e clique em Actions.
GitHub Actions que implementou em produção
Está feito. O seu código está agora preparado para deployment automático em produção via GitHub Actions.
Criar o ambiente de staging
A configuração do ambiente de staging é praticamente igual à de produção. Basta repetir os passos anteriores, substituindo production por staging sempre que necessário.
Comece por criar um ramo de staging:
git checkout -b staging
Depois faça push do seu ramo de staging para o GitHub:
git push --set-upstream origin staging
O GitHub Actions irá implementar automaticamente o seu ramo staging no serviço Node.js correspondente.
Próximos passos
É aconselhável proteger os ramos production e staging para evitar pushes diretos. Em vez disso, pode criar um pull request para o ramo de staging e fazer merge das alterações a partir do seu ramo de desenvolvimento. Depois de validar as alterações na plataforma de staging, faça merge do pull request para o ramo production.
Este workflow garante que apenas colaboradores autorizados podem fazer push para os ramos de staging e produção, e oferece uma camada adicional de testes antes de novas funcionalidades entrarem em produção.