Ruby: Implementar com GitHub Actions

Como implementar o seu código Ruby usando GitHub Actions

👋 Bem-vindo à documentação do Stackhero!

A Stackhero oferece uma solução Ruby 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 Ruby cloud hosting da Stackhero!

O GitHub Actions permite automatizar tarefas como a implementação do seu código Ruby em servidores de produção.

Neste guia, aprenderá a usar o GitHub Actions de forma segura e fiável para implementar o seu código Ruby em ambientes de staging e produção.

Para isso, manterá duas branches: staging e production, onde o código enviado para estas branches será automaticamente implementado na instância correspondente do Stackhero.

Ter uma instância de staging não é obrigatório. Pode seguir este guia e ter apenas uma instância de produção. No entanto, para garantir implementações suaves e ter total confiança ao implementar em produção, é fortemente recomendado manter tanto uma instância de staging quanto uma de produção. Esta prática é um padrão da indústria e uma boa prática, ajudando a evitar inúmeros problemas.

Para seguir este guia, precisa de uma conta GitHub com um repositório que hospede o seu código.

Aceda ao seu painel de controlo Stackhero e crie dois serviços Stackhero, um para staging e outro para produção. Para evitar qualquer confusão, recomendamos renomear estes serviços para "Production" e "Staging".

Ainda não tem uma conta Stackhero? Pode criar uma em apenas dois minutos, gratuitamente, e depois criar os seus serviços cloud Ruby com apenas alguns cliques.

Exemplo de serviços de produção e stagingExemplo de serviços de produção e staging

As chaves SSH darão ao GitHub Actions o direito de se conectar ao seu serviço Ruby para implementar o seu código. Esta é uma parte essencial para garantir a segurança dos seus serviços Stackhero.

No seu computador, crie novas chaves SSH:

ssh-keygen -C "" -f /tmp/ssh_key -N ""

Recupere a chave pública que acabou de gerar:

cat /tmp/ssh_key.pub

No painel de controlo do Stackhero, selecione o seu serviço Ruby "production" e clique no botão "Configure". Obter configurações do serviçoObter configurações do serviço

Em seguida:

  1. Em SSH public keys, clique em Add a public key.
  2. Em Description, coloque GitHub Action.
  3. Em Key, cole o conteúdo da chave pública que tem no seu computador.

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

Vá ao site do GitHub e selecione o seu projeto.

Clique em Settings/Environments e depois em New environment. Configurar ambientes GitHubConfigurar ambientes GitHub

Em Name, coloque "production" e confirme. Definir o ambienteDefinir o ambiente

Clique no botão No restriction e selecione Selected branches and tags. Definir restrições do ambienteDefinir restrições do ambiente

Clique em Add deployment branch or tag rule, insira "production" em Name pattern, e clique em Add rule. Definir a branch do ambienteDefinir a branch do ambiente Definir a branch do ambienteDefinir a branch do ambiente

Em Environment secrets, clique em Add secret. Adicionar segredoAdicionar segredo

Recupere a chave privada que gerou anteriormente no seu computador:

cat /tmp/ssh_key

Em Name, coloque STACKHERO_SSH_PRIVATE_KEY. Em Value, cole a sua chave privada. Definir o segredo da chave privada SSHDefinir o segredo da chave privada SSH

Em Environment variables, clique em Add variable. Definir variáveisDefinir variáveis

Em Name, coloque STACKHERO_ENDPOINT. Em Value, cole o endpoint do seu serviço Ruby. Encontrará isso no seu painel de controlo Stackhero. Definir a variável de endpointDefinir 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.

Como já não precisará das chaves SSH geradas anteriormente, pode apagá-las do seu computador por razões de segurança:

rm /tmp/ssh_key /tmp/ssh_key.pub

No seu repositório Git, no seu computador, crie um diretório chamado .github/workflows. Neste diretório, crie 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:
    # Lista de branches que irão acionar a ação de deploy após um git push.
    # Não se esqueça de criar um ambiente correspondente ao nome da branch no GitHub (em "Settings"/"Environments").
    # Depois adicione o segredo correspondente "STACKHERO_SSH_PRIVATE_KEY" e a variável "STACKHERO_ENDPOINT" neste 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 da branch correspondente no GitHub em "Settings"/"Environments".
        ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
        endpoint: ${{ vars.STACKHERO_ENDPOINT }}

Comite as suas alterações:

git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"

Depois, crie uma branch de produção:

git checkout -b production

Finalmente, envie as suas alterações para o GitHub:

git push --set-upstream origin production

Este comando final git push enviará o código do seu computador para a branch production do GitHub. O GitHub Actions será executado automaticamente e implementará este código na sua instância Stackhero.

Para verificar esta ação, vá ao site do GitHub, selecione o seu projeto, e clique em Actions. GitHub Actions que implementou em produçãoGitHub Actions que implementou em produção

Parabéns, agora pode implementar automaticamente o seu código em produção via GitHub Actions!

Criar o ambiente de staging é semelhante à configuração do ambiente de produção. Para criá-lo, repita os passos das secções anteriores deste guia, substituindo simplesmente production por staging.

Depois, crie uma branch de staging:

git checkout -b staging

Finalmente, envie as suas alterações para o GitHub:

git push --set-upstream origin staging

O GitHub Actions implementará automaticamente a sua branch de staging na instância Ruby designada para staging.

Uma boa prática é proteger as branches production e staging para evitar envios diretos para elas. Neste caso, um pull request deve ser criado para a branch staging e depois fundido por pessoas com direitos para enviar código para staging. Uma vez validado na plataforma de staging, o pull request pode ser fundido na branch production pelas mesmas pessoas que têm os direitos.

Esta abordagem garante segurança (apenas pessoas autorizadas podem enviar para staging e production) e fiabilidade (novas funcionalidades são testadas numa plataforma de staging antes de serem enviadas para a branch production).