Hi John, For database upgrade/migration, in the release version there are migration paths defined in the code; for example in setup/db/db/, schema-302to40* etc. Maven (deploydb etc.) is only used for development where I think we generally don't deal with migration, we usually take/do fresh setup/installation.
Flyway sounds interesting, added on the TODOs for Maven; database migration during development, just in case someone needs such a feature: https://cwiki.apache.org/confluence/display/CLOUDSTACK/Building+with+Maven#BuildingwithMaven-TODOs Regards. On 03-Oct-2012, at 5:25 PM, John Burwell <jburw...@basho.com> wrote: > Rohit, > > Has their been any consideration given to shifting a migrations model for > database schema management? In addition to providing deploydb capability in > Maven, it would also provide DRY schema management. Migrations inherently > support both clean database creation and arbitrary schema upgrade from a > single set of scripts. Currently, schema changes must be put in both the > create_schema.sql and appropriate release upgrade scripts. I have used > Flyway (http://code.google.com/p/flyway/) in the past with great success. In > addition providing Maven integration, it also provides an API that could used > by DatabaseUpgradeChecker. > > Thanks, > -John > > On Oct 3, 2012, at 1:55 AM, Rohit Yadav <rohit.ya...@citrix.com> wrote: > >> Thanks Hugo! >> >> On 02-Oct-2012, at 5:30 AM, Hugo Trippaers <htrippa...@schubergphilis.com> >> wrote: >> >>> Hey guys, >>> >>> I'm working very hard to get the maven stuff working in the master branch. >>> I'll try not to disrupt the existing ant builds of master, but sooner or >>> later we need to go either left or right. For now I've updated the page >>> https://cwiki.apache.org/confluence/display/CLOUDSTACK/Building+with+Maven >>> with instructions on how to use maven. If you feel there is information >>> missing or not clear, let me know and I'll try to update it. >>> >>> The short term goal is to have maven compile the code and build the >>> following artifacts: >>> >>> * Client.war (the management website including dependencies) >>> >>> * Usage.jar (executable jar for the usage server including deps) >>> >>> * Awsapi.war (awsapi website including deps) >>> >>> * Systemvm.iso >>> >>> * Agent.zip >> >> I'd added a TODOs sections for Maven: >> https://cwiki.apache.org/confluence/display/CLOUDSTACK/Building+with+Maven#BuildingwithMaven-TODOs >> Let's update on that, to keep us updated asynchronously. And there are >> couple of bugs on JIRA as well. >> >>> >>> Next to this: >>> >>> * Developer support, deploydb, refreshdb, start debug server >> >> For the developer workflow, why not move the plugins to top level pom under >> a profile? Right now I see they are in a profile already? Although, if we >> were to move db properties, assemblies etc, moving stuff into the developer/ >> makes sense. >> >> I've some working in progress to use exec plugin to do some of the deploy >> db/server commands. After I deploy with ant, I was able to run the server >> using Jetty: >> https://cwiki.apache.org/confluence/display/CLOUDSTACK/Building+with+Maven#BuildingwithMaven-Runningaserverfortest%2Fdebugpurposes. >> >> I'm still not able to configure/use the tomcat plugin correctly. >> >> Also if you could you fix your editor to insert spaces instead of tabs as it >> distorts for me on vim. 2 spaces/1tab for .xmls :D >> >>> If anyone wants to help feel free! Just testing, working with the maven >>> build and sending feedback will help enormously. >> >> +1 >> >> Alright, can we now discuss the packaging strategy as well? Will we continue >> using waf+maven+ant hack or use maven plugins for packaging, or specs and >> control files for the purists? Deb packaging is working fine, just some >> resolvable issues. RPM was WIP, but I pre-empted that work after the >> discussion on IRC last week. >> >> Okay, here are the pros and cons I can think of if we use packaging using >> maven plugins; (in the following package means deb or rpms) >> >> Pros: >> - Each submodule/artifacts gets its own package >> - With this design, it's possible to develop, test and package each >> submodule individually >> - With this design, it's possible for a plugin developer and developers in >> general to just focus on their work and not be bothered by learning the >> build system, they can just drop in their code in plugins/ and not touch any >> other part of the source tree. >> - It's very fast, right now it takes 30-50 mins to test any build/source >> changes. >> - Variables in pom.xml can be imported dynamically in control/conf files >> using [[ ]] . >> >> Cons: >> - I was told on IRC that build system folks and purists prefer their specs, >> control files. >> - I'm still to figure out how to expand variables like @SYSDIR@ in several >> .in scripts which are expanded by waf now. Exec plugin is one option. >> (Purists will still require waf or something to expand vars in these .in >> scripts before they can call rpm build or debuild) >> >> Pl. add pros/cons you may think and let's decide based on build system >> maintainability, ease for developers. >> >>> I know this work is happening parallel to the 4.0 release, but I already >>> planned to spend this week in the states with Edison to work on this. None >>> of the work we do will affect the 4.0 branch anyway. >> >> +1 let's do this in parallel, without removing any ant build system parts >> for now, and do housekeeping only after we've a stable build system with >> maven. How about making rule that all build patches go though reviews, as >> build bugs become blockers. >> >> Regards. >> >>> >>> Cheers, >>> >>> Hugo >> >