I'm currently evaluating a few CMS' for an upcoming product and so far Umbraco seems to be the stand out option. Before I get too into it though I would like to have a good workflow for development and deployment.
I've been combing these forums for information about packaging (this blog post was particularly useful). What I'm not sure of is how versioning works and how it fits in with other developers. For instance, if I have an action that creates a document type (MyDocType) I only want it to be run once and if it needs to be modified (a property added) that would be done in a consecutive action. Does Umbraco track which steps have already been run?
This is the workflow of fluent migrator and it works well with multiple developers and when upgrading production versions so being able to do this in Umbraco would be great.
Also, is there a way to install the package from the CLI/build script?
I've not used FluentMigrator, but having had a quick look at it I don't really see how you could apply it to Umbraco, it looks more like it's around database management, not data management (I could be wrong, as I said I haven't used it before and that was my impression from looking at the doco on github).
Since Umbraco stores pretty much all of its data within a database having a full CI process is rather hard, and it's not helped by the fact that the API is not designed to work outside of the web context, essentially locking you down to what you can CI.
That said you can achieve CI if you try, I've worked on a CI for Umbraco but it basically requires custom development to achieve.
Your correct, FluentMigrator is primarily for structure not data. But from my point of view adding something like a document type is a structural change.
Regardless of whether it's used in a CI build or not this is something I think is necessary for multi user development. I need to be able to take my development setup from a known working state (last build, copy from live etc) and update it with my recent changes/other developers changes. I'm not sure if installing the package again would do this.
What I advocate (and I believe it's also that suggested in the Umbraco training, but I'm not sure) is that developers have a shared database that they work on, otherwise you *need* to have some kind of a CI process (whether it's true CI or just an integration strategy) to ensure that everyone can sync all their changes together.
I read through that thread and it seems that there was no good solution, just allot of hacks with reseeding primary keys and such. The final proposed solution is pretty much what I was looking for in the OP.
Yes, that was the point I was trying to illistrate is that there isn't a good way to do CI with Umbraco and there's not standard way to do team development.
Basically find out what way suites your dev team and run with it.
Dev/Deploy workflow (like FluentMigrator)?
I'm currently evaluating a few CMS' for an upcoming product and so far Umbraco seems to be the stand out option. Before I get too into it though I would like to have a good workflow for development and deployment.
I've been combing these forums for information about packaging (this blog post was particularly useful). What I'm not sure of is how versioning works and how it fits in with other developers. For instance, if I have an action that creates a document type (MyDocType) I only want it to be run once and if it needs to be modified (a property added) that would be done in a consecutive action. Does Umbraco track which steps have already been run?
This is the workflow of fluent migrator and it works well with multiple developers and when upgrading production versions so being able to do this in Umbraco would be great.
Also, is there a way to install the package from the CLI/build script?
I've not used FluentMigrator, but having had a quick look at it I don't really see how you could apply it to Umbraco, it looks more like it's around database management, not data management (I could be wrong, as I said I haven't used it before and that was my impression from looking at the doco on github).
Since Umbraco stores pretty much all of its data within a database having a full CI process is rather hard, and it's not helped by the fact that the API is not designed to work outside of the web context, essentially locking you down to what you can CI.
That said you can achieve CI if you try, I've worked on a CI for Umbraco but it basically requires custom development to achieve.
Your correct, FluentMigrator is primarily for structure not data. But from my point of view adding something like a document type is a structural change.
Regardless of whether it's used in a CI build or not this is something I think is necessary for multi user development. I need to be able to take my development setup from a known working state (last build, copy from live etc) and update it with my recent changes/other developers changes. I'm not sure if installing the package again would do this.
You should probably have a read of this thread: http://our.umbraco.org/forum/core/general/3619-Source-control-and-multiple-developers it may answer many of the questions you have.
What I advocate (and I believe it's also that suggested in the Umbraco training, but I'm not sure) is that developers have a shared database that they work on, otherwise you *need* to have some kind of a CI process (whether it's true CI or just an integration strategy) to ensure that everyone can sync all their changes together.
I read through that thread and it seems that there was no good solution, just allot of hacks with reseeding primary keys and such. The final proposed solution is pretty much what I was looking for in the OP.
Yes, that was the point I was trying to illistrate is that there isn't a good way to do CI with Umbraco and there's not standard way to do team development.
Basically find out what way suites your dev team and run with it.
is working on a reply...