Este módulo fornecerá um sistema de atualização automática funcional para a comunidade Odoo v10.
Uma coluna checksum_dir
será adicionada a ir.module.module
, que representará a soma de verificação sha1 do diretório (use checksumdir
). Uma coluna checksum_installed
também será adicionada, representando a soma de verificação da versão do módulo atualmente instalada.
O menu Updates
atual em Aplicativos será substituído por um menu de nomenclatura idêntica que exibirá uma visualização em árvore de ir.module.module
registros que têm um checksum_dir
diferente de checksum_installed
.
Pode fazer sentido adicionar um botão no cabeçalho da exibição em árvore acima para permitir a funcionalidade Update Apps List
, o que tornaria o processo mais fluido. Ou talvez isso deva ser apenas chamado implicitamente ao visualizar a lista de atualizações.
Os módulos a serem atualizados serão selecionados na visualização em árvore, com uma opção fornecida no menu Action
para agendá-los para atualização.
A atualização em si será agendada usando o mecanismo Odoo padrão de configuração de ir.module.status
para to upgrade
. A partir daí, o botão Apply Scheduled Upgrades
pré-existente na IU funcionará.
Para dar um passo adiante, também adicionaremos um parâmetro de servidor para configurar um cron job para atualização automática de módulos em tempos específicos.
Um bom recurso seria redirecionar todas as solicitações da web recebidas para um modelo estático definido durante a atualização, o que permitiria um período de manutenção mais tranquilo.
Alguém tem alguma opinião sobre isso, ou código pré-existente no qual eu poderia basear isso?
@lasley e anautomatic git fetch e git reset? Eu adoraria.
Nem todo mundo usa Git, então isso não é possível.
: +1: para o recurso de atualização da comunidade.
Algumas de nossas instâncias ainda não estão Dockerized, então posso realmente estar ok em adicionar manipulação git como uma opção para tornar o legado um pouco mais fácil de trabalhar e adiar um pouco as atualizações.
O único problema que encontraremos, pelo menos em minhas implantações, é que o usuário Odoo não tem acesso de gravação aos diretórios do módulo, exceto em alguns casos raros (e mesmo assim, apenas seu ./static
dir). Não é o caso de você @ Yenthe666?
Olá @lasley ,
Não, não temos esse problema. Nosso usuário Odoo tem acesso dentro das pastas /odoo
exatamente para isso.
Saudações,
Yenthe
Também @pedrobaeza isso pode ser facilmente configurável como uma configuração para permitir para aqueles que querem ou usam o git.
OK então
@ Yenthe666 - É fácil adicionar o recurso, então vamos prosseguir e implementar isso. Isso ajudará em nossos ambientes de desenvolvimento também, que não têm a segurança que nossos bastões têm.
Como observação, não recomendo a configuração para permitir ao usuário Odoo acesso de gravação a arquivos que ele não precisa explicitamente gravar. Este é um vetor de ataque comum para outros CMS como Wordpress e Magento - então eu sinto que seria o mesmo aqui. Basicamente, se um invasor ganha controle sobre o Odoo, ele pode plantar código malicioso em lugares onde você nunca iria olhar.
Uma solução é esquecer o git e as versões e usar as somas de verificação SHA. O trabalho ir.cron
seria:
@lasley Temos este módulo que cobre parcialmente o que você sugere e também o autobackup https://github.com/ingadhoc/odoo-support/tree/9.0/database_tools.
Já apresentamos os dias odoo e oca sprint, mas não chamou a atenção
Você pode verificar a apresentação disponível no leiame. Adicionamos um "cli" para que você possa consertar o banco de dados da linha de comando com algo como "odoo.py fixdb". Enquanto corrige o db, ele inicia um cliente da web no mesmo xmlrpc com uma página estática informando que você está em uma atualização.
Há muitas coisas feias no módulo, mas estamos usando-o em produção há quase 3 anos
@Yajo - Oh,
@jjscarafia -
Acho que o botão padrão "Executar cron agora" resolveria o problema. Seria realmente necessário IMHO, mas você já o tem.
Eu também seria o menos inteligente possível e deixaria checksum_installed
vazio por padrão. A próxima iteração do cron consideraria uma incompatibilidade e atualizaria tudo. E a partir desse ponto, tudo estaria bem. O Cron deve ser pré-configurado para funcionar às 3 da manhã ou assim.
@lasley Sim, é muito duplicado, mas este foi antes de o outro existir. Tenho uma tarefa pendente para verificar o oca uns depreciar essa funcionalidade ao migrar para o odoo 10, então alinhado com isso, ter a funcionalidade dos módulos de atualização em outro módulo seria ótimo. Ainda não estou muito familiarizado com as implicações de mudar para LGPL, mas não há problema para mim. O que devo fazer para permitir o uso do código e a alteração da licença?
@jjscarafia - A principal implicação para LGPL é que é possível para alguém fazer um derivado de código fechado de seu aplicativo, então eles são definitivamente muito pesados. Dê uma olhada nesta divisão que é excessivamente simplista, mas acho que esclarece o ponto.
Você verá que a "Mesma Licença" se aplica apenas quando o derivado não está usando seu software como uma biblioteca. Em termos gerais, isso significa que a licença GPL e AGPL irá sangrar em qualquer coisa que dependa do seu módulo no manifesto. LGPL só irá sangrar em código que faça modificações no código real do seu módulo, então simplesmente depender dele no manifesto permitirá que você escolha qualquer licença (possivelmente proprietária).
Tudo o que precisamos é sua permissão para a alteração da permissão e licença. Minha equipe irá migrar o que precisamos, marcar você no PR e obter sua aprovação lá. Então, temos um registro de você concordando com a mudança e estamos prontos para prosseguir.
Não fui muito fundo no seu módulo, mas estava curioso para saber o que a parte fix_db
faz? Isso apenas atualiza tudo?
@lasley obrigado pelo link e a explicação, muito claro agora. Ok, para mim, espero o ping no PR.
Este método pode ser chamado a partir da interface do banco de dados e executa uma atualização em cada módulo que requer a atualização (em relação às mudanças na versão mais recente e instalada)
O cli "fixdb" chama esse método para cada banco de dados (se você não especificar nenhum) ou para o banco de dados -d.
Usamos isso no ponto de
Fechando a pista em # 882
Comentários muito úteis
@ Yenthe666 - É fácil adicionar o recurso, então vamos prosseguir e implementar isso. Isso ajudará em nossos ambientes de desenvolvimento também, que não têm a segurança que nossos bastões têm.
Como observação, não recomendo a configuração para permitir ao usuário Odoo acesso de gravação a arquivos que ele não precisa explicitamente gravar. Este é um vetor de ataque comum para outros CMS como Wordpress e Magento - então eu sinto que seria o mesmo aqui. Basicamente, se um invasor ganha controle sobre o Odoo, ele pode plantar código malicioso em lugares onde você nunca iria olhar.