Tutorial: Fluxo de trabalho de desenvolvimento baseado em branch

Saiba como utilizar ramos, como os do Git, proporcionando a cada desenvolvedor um ramo isolado para trabalho independente e, em seguida, resetando para manter a sincronia.

Pré-requisitos

  • Um projeto do Lakebase com um production ramo (o padrão)
  • Uma development ramificação criada a partir de production para trabalho de desenvolvimento compartilhado
  • Familiaridade básica com SQL e Postgres

Configurar seu esquema inicial

Antes de criar seu branch de desenvolvedor, configure um esquema simples no branch de desenvolvimento. Isso serve como o ponto de partida compartilhado a partir do qual todos os desenvolvedores criarão suas bifurcações. Ao criar sua ramificação pessoal, ela herda instantaneamente esse esquema por meio de copy-on-write.

  1. Navegue até sua filial de desenvolvimento no aplicativo Lakebase.
  2. Abra o editor SQL.
  3. Crie uma tabela de usuários básicos com dados de exemplo:
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    email TEXT NOT NULL UNIQUE,
    created_at TIMESTAMP DEFAULT NOW()
);

INSERT INTO users (email) VALUES
    ('alice@example.com'),
    ('bob@example.com'),
    ('charlie@example.com');

Crie o ramo de desenvolvimento

Cada desenvolvedor da sua equipe pode ter uma ramificação de longa duração para trabalhos em andamento. Redefina-o periodicamente para manter a sincronização com o pai.

Na lista de ramificações do projeto, selecione o branch de desenvolvimento e clique em Criar ramificação secundária. Insira um nome de branch (obrigatório), como dev/alex (seguindo o padrão dev/<your-name>) e clique em Criar.

A ramificação é criada instantaneamente e inclui todos os esquemas e dados do ambiente de desenvolvimento, utilizando a técnica de copy-on-write.

Sua hierarquia de ramificação:

production (root)
  └── development (has users table + data)
        └── dev/alex (instantly inherits users table + data)

Desenvolver seu recurso

Aponte sua aplicação para a sua branch de desenvolvimento atualizando a string de conexão no arquivo .env e depois desenvolva a funcionalidade utilizando seu fluxo de trabalho habitual.

Por exemplo, adicionar o controle de preferência do usuário ao seu aplicativo envolveria atualizar seu modelo de usuário, gerar uma migração com sua estrutura (Prisma, Alembic, Django etc.) e executá-la em seu dev/alex branch. Seu arquivo de migração pode conter:

ALTER TABLE users ADD COLUMN preferences JSONB DEFAULT '{}';
CREATE INDEX idx_users_preferences ON users USING GIN (preferences);

Depois de executar a migração, desenvolva o recurso de preferência no código do aplicativo e teste o fluxo completo localmente. Seu branch está completamente isolado. As alterações não afetam a produção nem outros desenvolvedores.

Examinar as alterações

Antes de promover para outros ambientes, use o schema diff para verificar exatamente o que mudou. Vá para a visão geral da sua ramificação dev/alex, clique em Diferenciação de esquema e compare com development.

A comparação lado a lado mostra sua nova preferences coluna e índice em verde:

Diferenciação de esquema mostrando a coluna de preferências e o índice adicionados à ramificação dev/alex

Essa etapa de verificação ajuda a capturar alterações não intencionais antes que elas cheguem à produção. Para a documentação completa de diferenças de esquema, consulte Comparar esquemas de ramificação.

Promover suas alterações

A promoção não é automática. Para promover suas alterações, execute na sua ramificação development a mesma migração que você já executou em dev/alex. Não há nenhuma etapa específica do Lakebase envolvida. O arquivo de migração já está na base de código, portanto, isso segue o processo normal de implantação.

  1. Atualize sua cadeia de caracteres de conexão para apontar para a sua ramificação development.
  2. Execute sua migração contra development usando o mesmo comando que você usou em dev/alex.
  3. Implante o código do aplicativo atualizado.

Como a migração já foi validada na sua ramificação pessoal, ela deve ser aplicada sem problemas. Após a promoção, outros desenvolvedores verão o esquema atualizado ao redefinirem suas ramificações em development.

Reiniciar e começar de novo

Quando você estiver pronto para iniciar novas tarefas, redefina seu branch pessoal para manter-se sincronizado com development, que pode ter recebido alterações de outros desenvolvedores. Isso oferece um novo início a partir da linha de base compartilhada atual.

Navegue até a sua ramificaçãodev/alex e clique em Redefinir com base no pai. O modal de redefinição confirma que todos os bancos de dados e funções serão substituídos pelos dados mais recentes de development. Essa ação não é reversível, portanto, verifique se você promoveu todas as alterações que deseja manter antes de confirmar.

Redefinir o modal de confirmação de dados

Sua ramificação agora corresponde development exatamente, pronta para sua próxima tarefa.

Práticas recomendadas

  • Utilize nomenclatura consistente: Siga o padrão dev/<name> para ramos de desenvolvedor.
  • Redefinir regularmente: mantenha sua ramificação em sincronia com development para evitar descompasso.
  • Proteger a produção: use ramificações protegidas para evitar alterações acidentais