Ruby: Implementar com GitHub Actions
Como implementar o seu código Ruby utilizando 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 facilita a automatização de tarefas como a implementação do seu código Ruby nos servidores de produção. Não são necessários passos manuais.
Neste guia, irá aprender como configurar o GitHub Actions de forma segura e fiável para implementar automaticamente o seu código Ruby nos ambientes de staging e produção. Esta abordagem garante que as implementações são consistentes e reduz o risco de erros.
Para começar, irá trabalhar com dois ramos no seu repositório GitHub: staging e production. Sempre que fizer push de código para estes ramos, as alterações serão automaticamente implementadas na instância Stackhero correspondente.
Ter uma instância de staging é opcional. Embora possa seguir este guia apenas com uma instância de produção, é altamente recomendado configurar ambos os ambientes de staging e produção. Isto é considerado uma boa prática no setor e ajuda a detetar problemas antes que cheguem aos utilizadores em produção.
Antes de começar, certifique-se de que tem uma conta GitHub e um repositório com o seu código Ruby.
Criar os serviços Ruby
Aceda ao seu dashboard Stackhero para criar dois serviços Ruby, um para staging e outro para produção. Para maior clareza, é aconselhável renomear estes serviços para "Production" e "Staging".
Ainda não tem uma conta Stackhero? Pode registar-se gratuitamente em apenas alguns minutos e, em seguida, criar os seus serviços cloud Ruby com apenas alguns cliques.
Exemplo de serviços de produção e staging
Configurar as chaves SSH
Para permitir que o GitHub Actions implemente o seu código, terá de configurar chaves SSH. Isto garante que apenas ações autorizadas podem ligar-se aos seus serviços Stackhero, mantendo as implementações seguras.
Pode gerar um novo par de chaves SSH no seu computador utilizando:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Definir a chave pública
De seguida, obtenha a chave pública que acabou de criar:
cat /tmp/ssh_key.pub
No dashboard Stackhero, selecione o seu serviço Ruby "production" e clique no botão "Configure".
Obter definições do serviço
Depois:
- Em
SSH public keys, clique emAdd a public key. - Em
Description, introduzaGitHub Action. - Em
Key, cole o conteúdo da chave pública do seu computador.
Obter definições do serviço
Definir a chave privada
Agora, aceda ao site do GitHub e abra o seu projeto.
Vá a Settings > Environments e clique em New environment.
Configurar ambientes no GitHub
Dê o nome "production" ao seu ambiente e guarde.
Definir o ambiente
Clique no botão No restriction e escolha Selected branches and tags.
Definir restrições do ambiente
Clique em Add deployment branch or tag rule, introduza "production" como padrão e adicione a regra.
Definir ramo do ambiente
Definir ramo do ambiente
Para guardar a sua chave privada SSH de forma segura, vá a Environment secrets e clique em Add secret.
Adicionar secret
Obtenha a sua chave privada do seu computador:
cat /tmp/ssh_key
Em Name, introduza STACKHERO_SSH_PRIVATE_KEY. Em Value, cole o conteúdo da sua chave privada.
Definir o secret da chave privada SSH
De seguida, adicione o endpoint do seu serviço Ruby como variável de ambiente. Clique em Add variable em Environment variables.
Definir variáveis
Em Name, introduza STACKHERO_ENDPOINT. Em Value, cole o endpoint do seu serviço Ruby, que pode encontrar no seu dashboard Stackhero.
Definir a variável endpoint
Se definiu um domínio personalizado para o seu serviço, certifique-se de utilizar esse domínio personalizado em vez de <XXXXXX>.stackhero-network.com.
Eliminar as chaves geradas
Depois de configurar as chaves no Stackhero e no GitHub, pode eliminá-las do seu computador por motivos de segurança.
rm /tmp/ssh_key /tmp/ssh_key.pub
Configurar o workflow do GitHub Actions
Na sua máquina local, no seu repositório Git, crie uma pasta chamada .github/workflows. Dentro desta pasta, 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 ramos 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 do ramo no GitHub (em "Settings"/"Environments").
# Depois adicione o secret "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:
# O secret "STACKHERO_SSH_PRIVATE_KEY" e a variável "STACKHERO_ENDPOINT" devem ser definidos no ambiente correspondente ao ramo no GitHub em "Settings"/"Environments".
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Depois de criar o ficheiro do workflow, pode confirmar as suas alterações.
git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"
De seguida, crie um ramo de produção.
git checkout -b production
Por fim, faça push das suas alterações para o GitHub.
git push --set-upstream origin production
Este último git push irá enviar o seu código para o ramo production no GitHub. O GitHub Actions irá iniciar automaticamente e implementar o seu código na sua instância Stackhero.
Para ver o seu workflow em ação, visite a página do seu projeto no GitHub e clique em Actions.
GitHub Actions que implementou em produção
Parabéns, acabou de configurar a implementação contínua para produção com o GitHub Actions.
Criar o ambiente de staging
A configuração do ambiente de staging segue exatamente o mesmo processo do ambiente de produção. Basta repetir os passos acima, substituindo production por staging sempre que necessário.
Depois de configurar o seu ambiente de staging, pode criar um ramo de staging.
git checkout -b staging
Faça push do seu ramo de staging para o GitHub.
git push --set-upstream origin staging
O GitHub Actions irá agora implementar automaticamente o seu ramo de staging na instância Ruby Stackhero dedicada ao staging.
Para ir mais longe
Para reforçar a segurança das suas implementações, é aconselhável proteger os ramos production e staging. Isto significa que os pushes diretos são restringidos e as alterações devem passar por um pull request. Os membros da equipa com as permissões adequadas podem rever e aprovar pull requests para staging e, quando tudo estiver validado, as alterações podem ser integradas em production da mesma forma.
Ao seguir este workflow, aumenta a segurança (apenas utilizadores autorizados podem implementar em staging e production) e a fiabilidade (todas as novas funcionalidades são testadas em staging antes de chegarem a produção). Isto ajuda a garantir implementações suaves e um ambiente de produção estável.