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.

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

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

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

Continue com estes passos:

  1. Em SSH public keys, clique em Add a public key.
  2. Em Description, introduza GitHub Action.
  3. Em Key, cole a chave pública que copiou anteriormente.

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

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

Introduza "production" em Name e confirme.

Definir o ambienteDefinir o ambiente

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

Definir restrições do ambienteDefinir 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 ambienteDefinir ramo do ambiente

Definir ramo do ambienteDefinir ramo do ambiente

Em Environment secrets, clique em Add secret.

Adicionar secretAdicionar 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 SSHDefinir o secret da chave privada SSH

Depois, em Environment variables, clique em Add variable.

Definir variáveisDefinir 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 endpointDefinir 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.

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

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

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.

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