Python: Implementar com GitHub Actions
Como implementar o seu código Python usando GitHub Actions
👋 Bem-vindo à documentação do Stackhero!
Stackhero oferece uma solução cloud Python 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 performance ótima 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 Python do Stackhero!
O GitHub Actions permite automatizar tarefas, como a implementação do seu código Python 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 Python em ambientes de staging e produção.
Para isso, manterá duas branches: staging e production. 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 estar totalmente confiante 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 abordagem sensata que pode ajudar a evitar inúmeros problemas.
Antes de começar, certifique-se de ter uma conta GitHub com um repositório que hospede o seu código.
Criar os serviços Python
Visite o seu painel de controlo Stackhero e crie dois serviços Stackhero, um para staging e outro para produção. Para maior clareza, pode considerar renomear estes serviços para "Produção" e "Staging".
Ainda não tem uma conta Stackhero? Pode inscrever-se em apenas dois minutos gratuitamente e depois criar os seus serviços cloud Python com apenas alguns cliques.
Exemplo de serviços de produção e staging
Configurar chaves SSH
As chaves SSH permitem que o GitHub Actions se conecte de forma segura ao seu serviço Python para a implementação do código. Este passo é essencial para proteger os seus serviços Stackhero.
No seu computador, gere novas chaves SSH executando:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Definir a chave pública
Primeiro, recupere a chave pública que acabou de gerar:
cat /tmp/ssh_key.pub
Depois, no painel de controlo do Stackhero, selecione o seu serviço Python "production" e clique no botão "Configurar".
Obter configurações do serviço
Siga estes passos:
- Em
Chaves públicas SSH, clique emAdicionar uma chave pública. - Em
Descrição, insiraGitHub Action. - Em
Chave, cole a chave pública que copiou do seu computador.
Adicionar chave pública
Definir a chave privada
Navegue até à página do seu projeto GitHub e clique em Settings, depois em Environments. Selecione New environment.
Configurar ambientes GitHub
No campo Name, digite "production" e confirme.
Definir o ambiente
Clique no botão No restriction e escolha Selected branches and tags.
Definir restrições de ambiente
Em seguida, clique em Add deployment branch or tag rule, insira "production" no campo Name pattern, e clique em Add rule.
Definir branch de ambiente
Definir branch de ambiente
Na seção Environment secrets, clique em Add secret.
Adicionar segredo
Agora, recupere a chave privada que gerou anteriormente:
cat /tmp/ssh_key
Na configuração do segredo, use STACKHERO_SSH_PRIVATE_KEY como Nome e cole a chave privada como Valor.
Definir o segredo da chave privada SSH
Depois, na seção Environment variables, clique em Add variable.
Definir variáveis
Insira STACKHERO_ENDPOINT como Nome e cole o endpoint do seu serviço Python como Valor. Pode encontrar este endpoint 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
Por razões de segurança, remova as chaves SSH do seu computador, pois não precisará mais delas:
rm /tmp/ssh_key /tmp/ssh_key.pub
Configurar o workflow do GitHub Actions
No seu repositório Git, crie um diretório chamado .github/workflows se ainda não existir. Depois, crie um ficheiro chamado deploy-to-stackhero.yml nesse diretório.
# 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 implementação após um push git.
# 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" 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 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 }}
Confirme estas alterações executando:
git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"
Depois, crie uma branch de produção:
git checkout -b production
Por fim, envie as suas alterações para o GitHub:
git push --set-upstream origin production
Este comando envia o seu código para a branch production do GitHub e aciona o GitHub Actions para implementar o código na sua instância Stackhero.
Para verificar a implementação, visite a página do projeto GitHub e clique em Actions.
GitHub Actions que implementou em produção
Parabéns, agora pode implementar automaticamente o seu código em produção usando o GitHub Actions!
Criar o ambiente de staging
Configurar o ambiente de staging é muito semelhante à configuração do ambiente de produção. Basta repetir os passos acima, substituindo production por staging.
Após configurar o ambiente, crie uma branch de staging:
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 na instância Python designada para staging.
Indo mais além
É uma boa prática proteger as branches production e staging para evitar envios diretos. Com esta configuração, pull requests devem ser criadas para a branch staging e fundidas por membros da equipa com os direitos apropriados. Uma vez validadas na plataforma de staging, as pull requests podem ser fundidas na branch production pelas mesmas pessoas autorizadas.
Esta abordagem melhora a segurança garantindo que apenas alterações aprovadas são implementadas e melhora a fiabilidade testando novas funcionalidades na plataforma de staging antes de chegarem à produção.