Joe, We use cayenne with both drone and Jenkins. In our models we never specify the schema. It’s always left unspecified I.e. blank.
When you do this the schema is determined by the JDBC URL. In our world the schemas are always the same so technically we could specify them but I personally feel the flexibility of determining database instance and schema from the environment is far superior to coding either in the model. We set shell variables to the JDBC url and then pick them up form the environment. This works flawlessly for us. Tony Giaccone > On Jul 6, 2019, at 9:36 PM, Joe Baldwin <[email protected]> wrote: > > I am trying to genericize the map.xml for multiple instances with multiple > dbnames (looking for a “use <dbname>” analogue for cayenne config files - or > a better idea if you have one) > > Details ... > > Context: > cayenne: 4.0.1 > db: mysql 8.0.16 > dbname: “cms" / “cmstest" / "cms_<bunch of others suffixes>” (all referring > to the same schema) > > Goals: > - migrate to cicd (gradle, git, jenkins, automated testing,etc) > - support testing configurations, as well as multiple instances of the same > app but with unique dbnames > > Prob: > While trying to migrate to fully automated testing (using junit-5) I hit a > snag: > - the cayenne map.xml has the datasource name (“cms” in this instance) > embedded in the map.xml config file: > > <property name="defaultSchema" value="cms”/> > ... > <db-entity name="admin" schema="cms"> > … > </db-entity> > > So the general idea I had was to create a tmp-test database (cmstest), run > the junit tests for unit & complex unit testing configured using gradle, then > move on to a more complex testing config downstream. When I deploy it will > be to multiple instances (with unique dbnames). > > But I cannot figure out how to genericize this map.xml so that I can easily > change the datasource name - I could throw sed/awk at it - to change all the > schema-name-refs, but I was hoping for something a bit more cayenne-oriented > (and less brittle than sed/awk). > > Ideally, I am searching for a cayenne-analogue to mysql “use <dbname>” so > that I could change the datasource name in one location (vs 25). > > Thanks > Joe > PS if you have any other gradle tricks that you rely on, please do send a link >
