"You're pirates. Hang the code, and hang the rules.
They're more like guidelines anyway."
I'll try to figure out some configuration and development process guidelines. Don't take it too seriously, it's just a guidelines :-)
Required infrastructure
Following tools and environments must be available:- Issue Tracking system - JIRA or BugZilla
- Version Control System [VCS] - Subversion, CVS, etc.
- Continuous Integration Tool [CI tool] - Hudson, Continuum etc.
- System Test environment exists (dev-box) - for system test by development team (QA team - by request). Available for developers to deploy.
- Integration Test environment exists (tst-box) - for QA team. Not available for developers
- Pre-Production (user-acceptance) environment exists (uat-box) - visible to end-uses, used by another projects within organization (clients). Maintained by Integrators
- Production environment (prod-box) - maintained by Integrators.
Project requirements
Project structure requires following:- Each system component should be buildable (build script exists)
- Each system component should be buildable on the remote machine using CI tool without human intervention (no manual source modifying) by schedule or forced build.
Roles
- Developer - works with code
- Builder - prepares the distribution
- Tester - tests the application
- Integrator - manages UAT and PROD environments
The Process
- Builder gets the binaries from the CI Tool and deploys to dev-box environment.
- When internal system test passed:
- Packages components, deployed to dev-box, into distribution package with build number assigned.
- Builder submits the Package to SCM or special folder.
- Builder assembles the change list (or marks issues in issue tracking system).
- Builder writes deployment instructions (if required)
- Builder sends changelist, deployment instructions and reference to the distribution package to the Tester.
- Tester gets the package from the Builder and deploys it to Dev-box.
- Tester tests changes described in CHANGELIST or from Bug Tracking system as well as the regression tests
- If QA test passed:
- Tester marks Distribution package as Release Candidate
- Developers implement features and fix bugs. All changes are submitted to the VCS[Version Control System]
- Tester writes Release Notes for RC.
- Tester sends deploys tested package together with release notes to the Integrator
- Integrator installs RC version to uat-box. (Integrator learns how to install the new release over existing running system.)
- If UAT phase passed
- RC version is marked as release version
- Integrator installs RC version to the customer's server.
Comments are welcome ;-)
No comments:
Post a Comment