Ramificações

Visão Geral

A visualização de ramificações oferece uma visão geral das diferentes ramificações do seu repositório.

../../../_images/interface-branches.png

Estágios

O Odoo.sh oferece três estágios diferentes para suas ramificações: produção, teste e desenvolvimento.

Você pode alterar o estágio de uma ramificação arrastando e soltando-a no título da seção de estágio.

../../../_images/interface-branches-stagechange.png

Produção

Essa é a ramificação que contém o código no qual sua base de dados de produção é executada. Só pode haver uma ramificação de produção.

Quando você envia um novo commit para essa ramificação, seu servidor de produção é atualizado com o código da nova revisão e, em seguida, reiniciado.

Se suas alterações exigirem a atualização de um módulo, como uma alteração em uma visualização de formulário, e você quiser que ela seja realizada automaticamente, aumente o número da versão do módulo em seu manifesto (__manifest__.py). A plataforma se encarregará de realizar a atualização, durante a qual a instância ficará temporariamente indisponível para manutenção.

Esse método é equivalente a executar uma atualização do módulo pelo menu de Aplicativos ou pela opção -u da linha de comando.

Caso as alterações na submissão impeçam a reinicialização do servidor ou a atualização dos módulos falhe, o servidor é automaticamente revertido para a revisão de código bem-sucedida anterior e a base de dados é revertida para como estava antes da atualização. Você ainda terá acesso ao log da atualização com falha, portanto, pode solucionar o problema.

Os dados de demonstração não são carregados, pois não são usados em uma base de dados de produção. Os testes de unidade não são executados, pois isso aumentaria o tempo de indisponibilidade da base de dados de produção durante as atualizações.

Os parceiros que usam projetos de teste devem estar cientes de que sua ramificação de produção, juntamente com todas as ramificações de teste, será automaticamente redefinida para o estágio de desenvolvimento após 30 dias.

Teste

As ramificações de teste têm o objetivo de testar seus novos recursos usando os dados de produção sem comprometer a base de dados de produção real com registros de teste. Elas criarão bases de dados que são duplicatas neutralizadas da base de dados de produção.

A neutralização inclui:

  • Desativar ações agendadas. Se quiser testá-las, você pode acionar suas ações manualmente ou reativá-las. Lembre-se de que a plataforma as acionará com menos frequência para economizar recursos se ninguém estiver usando a base de dados.

  • Desativar e-mails enviados interceptando-os com um coletor de e-mails. É fornecida uma interface para visualizar os e-mails enviados pela sua base de dados. Dessa forma, você não precisa se preocupar em enviar e-mails de teste para seus contatos.

  • Configuração de provedores de pagamento e transportadoras no modo de teste.

  • Desativar serviços IAP

A base de dados mais recente será mantida ativa indefinidamente; as mais antigas da mesma ramificação podem ser descartadas para dar lugar às novas. A base será válida por três meses, após os quais você deverá compilar a ramificação novamente. Se você fizer alterações de configuração ou visualização nessas bases de dados, certifique-se de documentá-las ou escrevê-las diretamente nos módulos da ramificação, usando arquivos de dados XML que substituam a configuração ou as visualizações padrão.

Os testes de unidade não são executados porque, no Odoo, eles atualmente dependem dos dados de demonstração, que não são carregados na base de dados de produção. No futuro, se o Odoo suportar a execução dos testes de unidade sem os dados de demonstração, o Odoo.sh considerará a execução dos testes em bases de dados de teste.

Desenvolvimento

As ramificações de desenvolvimento criam novas bases de dados usando os dados de demonstração para executar os testes de unidade. Os módulos instalados são aqueles incluídos em suas ramificações. Você pode alterar essa lista de módulos a instalar nas Definições de projetos.

Quando você envia uma nova submissão em uma dessas ramificações, um novo servidor é iniciado, com uma base de dados criada do zero e a nova revisão da ramificação. Os dados de demonstração são carregados e os testes de unidade são executados por padrão. Isso verifica se suas alterações não quebram nenhum dos recursos testados. Se preferir, você pode desativar os testes ou permitir que testes específicos sejam executados com marcadores personalizados nos Definições da ramificação.

Semelhantemente às ramificações de teste, os e-mails não são enviados, mas interceptados por um coletor de e-mails, e as ações agendadas não são acionadas enquanto a base de dados não está em uso.

As bases de dados criadas para ramificações de desenvolvimento são feitas para durar cerca de três dias. Após isso, podem ser descartadas automaticamente para dar espaço para novas bases de dados, sem aviso prévio.

Mesclar suas ramificações

Você pode facilmente mesclar suas ramificações arrastando e soltando-as umas nas outras.

../../../_images/interface-branches-merge.png

Quando quiser testar as alterações das suas ramificações de desenvolvimento com os dados de produção, você pode:

  • mesclar a ramificação de desenvolvimento com a de teste arrastando e soltando-a,

  • ou arrastar e soltar a ramificação de desenvolvimento no título da seção de teste para torná-la uma ramificação de teste.

Quando suas alterações mais recentes estiverem prontas para a produção, você poderá arrastar e soltar sua ramificação de teste na de produção para mesclar e implementar os recursos mais recentes em produção.

Se for ousado o bastante, você também pode mesclar suas ramificações de desenvolvimento na de produção. Assim, você ignorará a validação das alterações com os dados de produção através de uma ramificação de teste.

É possível mesclar as ramificações de desenvolvimento entre si e as de teste entre si.

Naturalmente, você também pode usar o git merge diretamente em sua estação de trabalho para mesclar suas ramificações. O Odoo.sh será notificado quando novas revisões forem enviadas para suas ramificações.

A mesclagem de uma ramificação de teste na ramificação de produção mescla apenas o código-fonte: Nenhuma alteração de configuração feita nas base de dados de teste é passada para a base de dados de produção.

Se você testou as alterações de configuração nas ramificações de teste e quiser que sejam aplicadas em produção, será necessário:

  • escrever as alterações de configuração em arquivos de dados XML substituindo as configurações ou visualizações padrão em suas ramificações e, em seguida, aumente a versão do seu módulo em seu manifesto (__manifest__.py) para acionar a atualização do módulo quando você mesclar a ramificação de teste na de produção. Essa é a prática recomendada para melhorar a escalabilidade de seus desenvolvimentos, pois você usará os recursos de controle de versão do Git para todas as alterações de configuração e, portanto, terá a rastreabilidade das alterações.

  • ou passá-las manualmente da base de dados de teste para a base de dados de produção copiando e colando-as.

Abas

Histórico

Visão geral do histórido da sua ramificação:

  • As mensagens e os autores das submissões,

  • Os diversos eventos vinculados à plataforma, como alterações de estágio, importações de bases de dados, restaurações de backup.

../../../_images/interface-branches-history.png

Para cada evento, é exibido um status no canto superior direito. Isso pode fornecer informações sobre a operação em andamento na base de dados (instalação, atualização, importação de backup, …) ou seu resultado (feedback de testes, importação de backup bem-sucedida, …). Quando uma operação é bem-sucedida, você pode acessar a base de dados graças ao botão conectar.

E-mails

Essa aba contém o coletor de e-mails. Ele exibe uma visão geral dos e-mails enviados pela base de dados. O coletor de e-mails está disponível para suas ramificações de desenvolvimento e preparação, pois os e-mails da base de dados de produção são realmente enviados em vez de serem interceptados.

../../../_images/interface-branches-mails.png

Shell

Um acesso de shell ao seu contêiner. Você pode executar comandos básicos do Linux (ls, top) e abrir uma shell na sua base de dados digitando psql.

../../../_images/interface-branches-shell.png

Você pode abrir várias abas e arrastar e soltá-las para organizar o layout como preferir, por exemplo, lado a lado.

Nota

As instâncias de shell de longa duração não são garantidas. As shells ociosas podem ser desconectadas a qualquer momento para liberar recursos.

Editor

Um ambiente de desenvolvimento integrado (IDE) on-line para editar o código-fonte. Você também pode abrir terminais, consoles Python e até mesmo consoles Odoo Shell.

../../../_images/interface-branches-editor.png

Você pode abrir várias abas e arrastar e soltá-las para organizar o layout como preferir, por exemplo, lado a lado.

Monitoramento

Esse link contém várias métricas de monitoramento da compilação atual.

../../../_images/interface-branches-monitoring.png

Você pode aplicar zoom, alterar o intervalo de tempo ou selecionar uma métrica específica em cada gráfico. Nos gráficos, as anotações ajudam compreender as alterações na compilação (importação de base de dados, git push, etc.).

Logs

Um visualizador para dar uma olhada nos logs do seu servidor.

../../../_images/interface-branches-logs.png

Estão disponíveis diferentes registros:

  • install.log: Os registros da instalação da base de dados. Em uma ramificação de desenvolvimento, os registros dos testes são incluídos.

  • pip.log: Os registros da instalação das dependências do Python.

  • odoo.log: Os registros do servidor em execução.

  • update.log: Os registros das atualizações da base de dados.

  • pg_long_queries.log: Os registros de consultas psql que levam uma quantidade incomum de tempo.

Se novas linhas forem adicionadas aos registros, elas serão exibidas automaticamente. Se você rolar até a parte inferior, o navegador rolará automaticamente cada vez que uma nova linha for adicionada.

Você pode pausar a obtenção de logs clicando no botão correspondente no canto superior direito da visualização. A busca é interrompida automaticamente após 5 minutos. Você pode reiniciá-la usando o botão play.

Backups

Uma lista dos backups disponíveis para download e restauração, a capacidade de realizar um backup manual e de importar um base de dados.

../../../_images/interface-branches-backups.png

O Odoo.sh faz backups diários da base de dados de produção. Ele mantém 7 backups diários, 4 semanais e 3 mensais. Cada backup inclui o dump da base de dados, o armazenamento de arquivos (anexos, campos binários), registros e sessões.

Não é feito backup das bases de dados de teste e desenvolvimento. No entanto, você tem a possibilidade de restaurar um backup da base de dados de produção em suas ramificações de teste, para fins de teste, ou de recuperar manualmente os dados que foram excluídos por acidente da base de dados de produção.

A lista contém os backups mantidos no servidor em que seu banco de dados de produção está hospedado. Esse servidor mantém apenas um mês de backups: 7 backups diários e 4 backups semanais.

Os servidores de backup dedicados mantêm os mesmos backups, bem como 3 backups mensais adicionais. Para restaurar ou fazer download de um desses backups mensais, entre em contato conosco <https://www.odoo.com/help>`_.

Se você mesclar uma submissão atualizando a versão de um ou vários módulos (em __manifest__.py), ou suas dependências python vinculadas (em requirements.txt), então o Odoo.sh executará um backup automaticamente (sinalizado com o tipo Atualização na lista), pois o contêiner será alterado pela instalação de novos pacotes pip, ou a própria base de dados será alterada com a atualização do módulo acionada posteriormente. Nesses dois casos, estamos fazendo um backup, pois ele pode potencialmente quebrar as coisas.

Se você mesclar uma submissão que altere apenas um código sem as modificações mencionadas acima, o Odoo.sh não fará nenhum backup, pois nem o contêiner nem a base de dados são modificadas e a plataforma considera isso suficientemente seguro. É claro que, como precaução extra, você pode fazer um backup manualmente antes de fazer grandes alterações nas fontes de produção, caso algo dê errado (esses backups manuais ficam disponíveis por cerca de uma semana). Para evitar abusos, limitamos os backups manuais a 5 por dia.

O recurso importar base de dados aceita arquivos de bases de dados no formato fornecido por:

  • o gerenciador de bases de dados padrão do Odoo (disponível para servidores Odoo on-premise em /web/database/manager)

  • o gerenciador de bases de dados do Odoo Online,

  • o botão de download do backup do Odoo.sh da aba Backups,

  • o botão de download do Odoo.sh na visualização de compilações.

Upgrade

Disponível para ramificações de produção e de teste para projetos válidos.

Definições

Aqui há algumas configurações que se aplicam apenas à ramificação selecionada no momento.

../../../_images/interface-branches-settings.jpg

Comportamento em uma nova submissão

Em ramificações de teste e desenvolvimento, você pode alterar o comportamento da ramificação ao receber o novo commit. Por padrão, uma ramificação de desenvolvimento criará uma nova compilação e uma de teste atualizará a compilação anterior (consulte Estágio de produção). Isso é particularmente útil se o recurso que você está trabalhando requer uma instalação ou configuração particular, de modo a evitar ter que configurá-lo novamente em cada commit. Se você escolher uma nova compilação para uma ramificação de teste, uma nova cópia da compilação de produção será criada cada vez que um commit for enviado. Uma ramificação que é colocada de volta de teste para desenvolvimento será definida automaticamente como ‘Não fazer nada’.

Instalação de módulos

Escolha os módulos a instalar automaticamente em suas compilações de desenvolvimento.

../../../_images/interface-settings-modulesinstallation.png
  • A opção Instalar somente meus módulos instalará somente os módulos da ramificação. Essa é a opção padrão. Os :ref: submódulos<odoosh-advanced-submodules> são excluídos.

  • Instalação completa (todos os módulos) instalará os módulos da ramificação, os módulos incluídos nos submódulos e todos os módulos padrão do Odoo. Ao executar a instalação completa, o conjunto de testes é desativado.

  • Instalar uma lista de módulos instalará os módulos especificados na entrada logo abaixo dessa opção. Os nomes são os nomes técnicos dos módulos e devem ser separados por vírgulas.

Se os testes estiverem ativados, a suíte de módulos padrão do Odoo pode levar até 1 hora. Essa configuração se aplica apenas a compilações de desenvolvimento. As compilações de teste duplicam a compilação de produção e a compilação de produção instala apenas a base.

Suíte de testes

Nas ramificações de desenvolvimento, você pode optar por ativar ou desativar a suíte de testes. Está ativada por padrão. Quando a suíte de testes está ativada, você pode restringi-los especificando marcadores de teste marcadores de teste.

Versão do Odoo

Somente em ramificações de desenvolvimento, você pode alterar a versão do Odoo, caso queira testar o código atualizado ou desenvolver recursos enquanto sua base de dados de produção está em processo de atualização para uma versão mais recente.

Além disso, para cada versão, você tem duas opções relacionadas à atualização do código.

  • Você pode optar aproveitar automaticamente as últimas correções de bugs, segurança e desempenho. Os códigos-fonte de seu servidor Odoo serão atualizados semanalmente. Essa é a opção “Mais recente”.

  • Ou pode optar por fixar as fontes do Odoo em uma revisão específica, selecionando-as em uma lista de datas. As revisões expirarão após 3 meses. Você será notificado por e-mail quando a data de expiração se aproximar e, se não tomar nenhuma medida depois disso, será automaticamente definido como a revisão mais recente.

Domínios personalizados

Aqui você pode configurar domínios adicionais para a ramificação selecionada. É possível adicionar outros domínios do <name>.odoo.com ou seus próprios domínios personalizados. Para este último, você precisa:

  • possuir ou comprar o nome de domínio,

  • adicionar o nome de domínio nessa lista,

  • No gerenciador de nomes de domínio do seu registrador, configure o nome de domínio com um registro CNAME definido como o nome de domínio da sua base de dados de produção.

Por exemplo, para associar www.mycompany.com à sua base de dados mycompany.odoo.com:

  • No Odoo.sh, adicione www.mycompany.com nos domínios personalizados das configurações de seu projeto,

  • no gerenciador de nomes de domínio (por exemplo, godaddy.com, gandi.net, ovh.com), configure www.mycompany.com com um registro CNAME com o valor mycompany.odoo.com.

Domínios simples (por exemplo, mycompany.com) não são aceitos:

  • Eles só podem ser configurados usando registros A,

  • os registros A só aceitam endereços IP como valor,

  • o endereço IP de sua base de dados pode mudar após uma atualização, uma falha de hardware ou se hospedar sua base de dados em outro país ou continente.

Portanto, os domínios simples podem deixar de funcionar repentinamente devido a essa mudança de endereço IP.

Além disso, se você quiser que mycompany.com e www.mycompany.com funcionem com sua base de dados, ter o primeiro redirecionando para o segundo está entre as “práticas recomendadas de SEO” (consulte Fornecer uma versão de um URL para acessar um documento) para ter um URL dominante. Portanto, você pode simplesmente configurar mycompany.com para redirecionar para www.mycompany.com. A maioria dos gerenciadores de domínios tem o recurso de configurar esse redirecionamento. Isso é comumente chamado de redirecionamento da web.

HTTPS/SSL

Se o redirecionamento for configurado corretamente, a plataforma gerará automaticamente um certificado SSL com Let’s Encrypt em uma hora e seu domínio poderá ser acessado por HTTPS.

Embora atualmente não seja possível configurar seus próprios certificados SSL na plataforma Odoo.sh, estamos considerando o recurso se houver demanda suficiente.

Conformidade com SPF e DKIM

Caso o domínio dos endereços de e-mail de seus usuários use SPF (Sender Policy Framework) ou DKIM (DomainKeys Identified Mail), não se esqueça de autorizar o Odoo como um host de envio nas configurações de seu nome de domínio para aumentar a capacidade de entrega de e-mails enviados. As etapas de configuração são explicadas na documentação sobre SPF e DKIM.

Aviso

Esquecer de configurar seu SPF ou DKIM para autorizar o Odoo como um host de envio pode levar seus e-mails à caixa de entrada dos contatos como spam.

Comandos de shell

No canto superior direito da visualização, diferentes comandos de shell estão disponíveis.

../../../_images/interface-branches-shellcommands.png

É possível copiar os comandos para a área de transferência para usar em um terminal, e alguns deles podem ser usados diretamente do Odoo.sh clicando no botão executar. Nesse caso, uma janela pop-up solicitará que o usuário defina eventuais marcadores de posição, como <URL>, <PATH>, …

Clonar

Faça o download do repositório Git.

$ git clone --recurse-submodules --branch master git@github.com:odoo/odoo.git

Clone o repositório odoo/odoo.

  • --recurse-submodules: Faz o download dos submódulos de seu repositório. Os submódulos incluídos nos submódulos também são baixados.

  • --branch: verifica uma ramificação específica do repositório, nesse caso a master.

O botão executar não está disponível para esse comando, pois ele deve ser usado nas suas máquinas.

Bifurcação

Crie uma nova ramificação com base na ramificação atual.

$ git checkout -b feature-1 master

Cria uma nova ramificação chamada feature-1 com base na ramificação master e, em seguida, faz o checkout dela.

$ git push -u origin feature-1

Faz upload da nova ramificação feature-1 em seu repositório remoto.

Mesclar

Mesclar a ramificação atual em outra.

$ git merge staging-1

Mescla a ramificação teste-1 na ramificação atual.

$ git push -u origin master

Carrega as alterações que você acabou de adicionar na ramificação master em seu repositório remoto.

SSH

Definição

Para usar o SSH, você precisa configurar a chave pública do SSH do seu perfil (se isso ainda não tiver sido feito). Para fazer isso, siga estas etapas:

  1. Gerar uma nova chave SSH

  2. Copie a chave SSH para sua área de transferência (aplique somente a etapa 1)

  3. Cole o conteúdo copiado nas chaves SSH de seu perfil e pressione “Adicionar”

    ../../../_images/SSH-key-pasting.png
  4. A chave deve aparecer abaixo

    ../../../_images/SSH-key-appearing.png

Conexão

Para se conectar às suas compilações usando o ssh, use o seguinte comando em um terminal:

$ ssh <build_id>@<domain>

Você encontrará um atalho para este comando na aba SSH no canto superior direito.

../../../_images/SSH-panel.png

Considerando que você possui os direitos adequados de acesso no projeto, será concedido acesso SSH à compilação para você.

Nota

Conexões SSH de longa duração não são garantidas. As conexões ociosas serão desconectadas para liberar recursos.

Submódulo

Adicione uma ramificação de outro repositório em sua ramificação atual como um submódulo.

Os Submódulos permitem que você use módulos de outros repositórios em seu projeto.

O recurso de submódulos é detalhado no capítulo Submódulos desta documentação.

$ git submodule add -b master <URL> <PATH>

Adiciona a ramificação master do repositório <URL> como um submódulo sob o caminho <PATH> em sua ramificação atual.

$ git commit -a

Faz commit de todas as alterações atuais.

$ git push -u origin master

Carrega as alterações que você acabou de adicionar na ramificação master em seu repositório remoto.

Excluir

Excluir uma ramificação de seu repositório.

$ git push origin :master

Exclui a ramificação em seu repositório remoto.

$ git branch -D master

Exclui a ramificação em sua cópia local do repositório.