php - SVN Website Development and Deployment Solution -


Here's the situation: We have many developers with varying degree of command line experience and we have a deployment solution for our websites. Are keeping together. . Production Environment 2 SUSE Linux Boxes. Development environment is also a SUSE Linux box. Each developer has a copy of the SVN tree which is in its home directory for development and testing.

The goal is to keep a release system which is easy to use and it is easy to return which will work with multiple production servers. It will be a bonus if a non-web developer (still web No coder in the world) It is easy to easily return any website. In an optimum world, a single command on the release website will be as easy to execute, which you will want to release, this command will update the production servers and behind it will leave the path of return in awareness.

Our current deployment solution is a bit of clunky, which is hard to slow down and slow down. We currently check all files using SVN. Then a script runs, which inevitably creates a tag in the SVN. The second script is run then goes on to each of the 2 production servers and runs a 'SVN up'.

Any suggestions?

I am a clean person and therefore working with things in the world of Windows ... However, to manage the management processes of the technologies I work on daily basis, your world! (Linux / Java technologies are in brackets, but I am also equal to my Windows Reader) I use (), (), and () to meet the needs of all its builds.

All my builds are automatically pushed and tagged at the time of check. It is done with cruise control because it monitors my source control (SVN or Subversion). When Cruise Control (CC) sees that the new code is checked, it will execute a CC project which in turn calls the ant script to the server.

Ant script does a lot of things for me in a normal build. It will check a copy of the latest code and take it to the build server. Then the code will be created to make sure that the least compiled stuff then sets a clean copy of my database and executes any SQL script to create that baseline DB until the current version. Run the test projects. I then run the integration test which tests my repository layer with other things to make sure that the code is still connected to the interval behind me (I usually use an ORM in my projects They are rarely out of sync ... but this is a good step in the process). Once all the tests (or failures) have elapsed, I roll back the database to a clean state and execute the script so that it can be brought to the current version (this is important because it will help the team to develop against click Provides a clean database for a button). If the build was successful, then I would deploy the code to the development server (I have a click on my staging server and production server). If you prefer to tag your code base in each check, you can do it here too.

Once all of this is complete, then I run some analysis, using my code, and, NDepend is a code analysis tool, to make sure things are right architecture. , Are similar to the naming standards, and a lot more. NDK removes all code comments and creates MSDN style documentation for my code. Encore tells me that I have proper coverage with unit tests for my code.

Then I have a custom ant function that I wrote that parses all my code to various // TODO and // CodeDebt tags to tell me (usually at the end of the sprint) Another report produces how much nonsense is being created in my code base and then it can be considered in the next sprint.

All these reports are either included in the build email that exits or whatever is appropriate.

Keep in mind that all the above is for every check ... and click without any button! This is a true unification and should be the goal of every build master.

Cruise control is a web based console that will allow non web dev people too (no one really) these push without push and check in code to execute ... forcing a build Gave.

Given this framework, you can easily roll a push back as long as everything is subject to version control. You will need the second ant script which will do the same process, but with the addition of an earlier first task, it will have to get the final version of the code rather than the most recent to process the building. All of the ant functions can be reused with a different performance target.


Comments

Popular posts from this blog

c++ - Linux and clipboard -

What is expire header and how to achive them in ASP.NET and PHP? -

sql server - How can I determine which of my SQL 2005 statistics are unused? -