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.
Criar os serviços Ruby
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 staging
Configurar chaves SSH
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 ""
Definir a chave pública
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ço
Em seguida:
- Em
SSH public keys, clique emAdd a public key. - Em
Description, coloqueGitHub Action. - Em
Key, cole o conteúdo da chave pública que tem no seu computador.
Obter configurações do serviço
Definir a chave privada
Vá ao site do GitHub e selecione o seu projeto.
Clique em Settings/Environments e depois em New environment.
Configurar ambientes GitHub
Em Name, coloque "production" e confirme.
Definir o ambiente
Clique no botão No restriction e selecione Selected branches and tags.
Definir 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 ambiente
Definir a branch do ambiente
Em Environment secrets, clique em Add secret.
Adicionar 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 SSH
Em Environment variables, clique em Add variable.
Definir 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 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
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
Configurar o workflow do GitHub Actions
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ção
Parabéns, agora pode implementar automaticamente o seu código em produção via GitHub Actions!
Criar o ambiente de staging
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.
Avançar
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).