Zarządzam aplikacją PHP / MySQL typu open source, z której korzysta kilka szkół K-12 i kilka szkół wyższych. Jestem także jedynym deweloperem projektu. Choć kiedyś było to niewiele więcej niż pobieranie aplikacji, którą hostuje mój pracodawca, w ciągu ostatniego roku pracowałem nad tym, aby przekształcić ją w „prawdziwy” projekt open source z dokumentacją, numerowanymi wydaniami, publicznymi dziennikami zmian itp.
Chcę usprawnić proces aktualizacji, a jednym z potencjalnie bolesnych obszarów (szczególnie dla szkół głodnych wiedzy informatycznej) są zmiany w schemacie bazy danych między wydaniami. Nie zdarzają się często lub są drastycznymi zmianami, ale byłbym wdzięczny za sugestie dotyczące tego procesu.
Obecnie utrzymuję podstawowy skrypt instalacyjny SQL, aby skonfigurować bazę danych w nowej instalacji. Obejmuje to pełny schemat dla bieżącej wersji; w przypadku nowej instalacji nie są wymagane żadne dalsze działania. Zmiany zachodzące między wydaniami są zapisywane w upgrade-$releasever.sql
skryptach i konieczne jest stopniowe uruchamianie wszystkich skryptów aktualizacji dla wszystkich wydań, które zostały pominięte.
Skrypty powłoki nie są odpowiednie, ponieważ wielu naszych użytkowników działa na hostach bez dostępu do powłoki. Ze względu na inne priorytety, prawdopodobnie nie zmaterializuje się złożony skrypt instalatora / aktualizacji PHP oparty na przeglądarce. Chciałbym jednak zrobić coś ze skryptem PHP opartym na przeglądarce, aby uprościć aktualizacje. Sugestie, jak do tego podejść?