Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best practice with Coldfusion deployment

I'm new to Coldfusion development and inherited an already deployed project. Due to various technical limitation, it is not possible to develop locally on our workstations (like you would do for .net). As a consequence, the files are edited directly from the test servers (and commited on SVN from there).

Once again, as the test db is usually way behind the prod db, we often have to edit the code directly from the prod server (please don't blame here, I know this is a bad thing).

I'd like to take this opportunity to put back the process into something manageable:

  • Local code edition
  • Unit testing using MXUnit
  • Commit with SVN
  • Have a hook on SVN that would deploy to the test server
  • Test on the test server
  • Trigger somehow the deployment to the prod servers

In terms of technology, I was thinking of a combination of: CFEclipse, MXUnit, SVN and ANT

Aside from SVN, everything would be new and can be changed of you have a better advice.

Did anyone have implemented such processes and could be me a hint on how to get started?

like image 506
E. Jaep Avatar asked Jun 05 '11 19:06

E. Jaep


1 Answers

In our office we tried firstly ANT + MXUnit + Selenium + TeamCity but after some time we decided to switch to Jenkins/Hudson continuous integration server.

There are plenty of how-tos and tutorials about continuous integration so I guess you don't need me here to explain it in details.

All in all, build your ANT scripts for svncheckin/checkout, build MXUnit tests, generate/write Selenium tests and run everything from Jenkins user interface on test server.

Quick hints: Develop ANT scripts locally, to avoid deleting files on server (happened to us once :) ). MXUnit is tricky when it comes to running it from browser, pay attention to application scoped variables. You can write/edit Selenium tests in many languages, Java seemed best choice in our case. Both TeamCity and Jenkins have their pros and cons, better try both and see which suits you better.

Related links:

http://www.jetbrains.com/teamcity/

http://jenkins-ci.org/

http://seleniumhq.org/

You can also take a look at BDD (Behavior driven development) and include JBehave http://jbehave.org/ into your agile development workflow, awesome stuff if you have "complicated" clients.

Good luck!

like image 105
zarko.susnjar Avatar answered Sep 25 '22 13:09

zarko.susnjar