Eu gerencio um aplicativo da web de código aberto PHP / MySQL usado por algumas escolas de ensino fundamental e médio e algumas faculdades. Eu também sou o único desenvolvedor do projeto. Embora fosse pouco mais do que o download de um aplicativo que meu empregador hospeda na fonte, trabalhei no último ano para transformá-lo em um projeto de código aberto "real", com documentação, lançamentos numerados, registros de alterações públicos etc.
Eu estou procurando melhorar o processo de atualização, e uma das áreas potencialmente dolorosas (especialmente para escolas famintas por especialistas em TI) está em alterações no esquema do banco de dados entre os lançamentos. Eles não costumam acontecer com frequência ou são mudanças drásticas, mas eu gostaria de receber sugestões sobre o processo.
Atualmente, mantenho um script de instalação SQL básico para configurar o banco de dados em uma nova instalação. Isso inclui o esquema completo da versão atual; nenhuma ação adicional é necessária para uma nova instalação. As alterações que ocorrem entre os releases são armazenadas em upgrade-$releasever.sql
scripts, e é necessário executar todos os scripts de atualização incrementalmente para todos os releases que foram ignorados.
Os scripts do shell não são adequados, porque muitos de nossos usuários operam em hosts sem acesso ao shell. Devido a outras prioridades, é improvável que um script complexo de instalação / atualização baseado no navegador PHP se materialize. Gostaria, no entanto, de fazer algo com um script PHP baseado em navegador para simplificar as atualizações. Sugestões sobre como abordá-lo?