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.

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.jsExemplo de serviços Node.js

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 ""

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çoObter configurações do serviço

A seguir:

  1. Em Chaves públicas SSH, clique em Adicionar uma chave pública.
  2. Para Descrição, insira GitHub Action.
  3. Para Chave, cole a chave pública que recuperou.

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

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 GitHubConfigurar ambientes GitHub

Insira "production" para o Nome e confirme a sua ação.

Configurar o ambienteConfigurar o ambiente

Clique no botão No restriction, depois escolha Selected branches and tags.

Configurar restrições de ambienteConfigurar 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 ambienteConfigurar a branch de ambiente

Configurar a branch de ambienteConfigurar a branch de ambiente

Em seguida, em Environment secrets, clique em Add secret.

Adicionar segredoAdicionar 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 SSHConfigurar o segredo da chave privada SSH

Depois, em Environment variables, clique em Add variable.

Configurar variáveisConfigurar 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 endpointConfigurar 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, remova as chaves SSH do seu computador assim que as tiver configurado no Stackhero e GitHub:

rm /tmp/ssh_key /tmp/ssh_key.pub

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çãoGitHub 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.

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.

É 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.