Changes

Release Management

1,087 bytes added, 07:26, 24 April 2014
/* Testing */
Each release cycle should follow this pattern:
# '''Development''' (2 - 4 Weeks): During this phase, new functionalities are developed.
# '''Feature FreezeTesting and bug fixing''' (1 - 2 Weeks): This gives time for the users to test and the time bug fixing and a quick retest.# '''Code Freeze''' (1 - 2 Weeks): This is a late freeze to avoid sudden last-minute accidents which could risk the stability that should have been reached at this point. No source code changes are allowed without two approvals from the release team, but translation and documentation should continue. Simple build fixes are, of course, allowed without asking.
= Versioning =
* New features are added to unstable/development versions only.
* We have separate version numbers for the separate components (installer, online-backup, ldap-schemas, ...).
 
We start with '''0.1.0''' for development and '''0.2.0''' for first stable release.
 
= Development Procedure =
We have a minimum of two branches:
# Trunk (development): Master branch, normally without name tags, for testing reasons we set tags: v0.5.0_pre1
# Branch 1 to N (stable branch(es) for bug fixing): v0.2, the tag for a release would be: v0.2.1 to v0.2.N
# Branch 2 (second stable branch for bug fixing): v0.4, the tag for a release would be: v0.4.1 to v0.4.N
== Development Procedure ==
This results in the following development procedure:
* Features are scheduled on the individual module [[:Category:Roadmap]|roadmap]] pages for implementation in specific future stable versions and are implemented (and tested) in development versions.* A stable new major version will be released at the earliest , when all features and goals specified for this stable version are implemented/reachedand testedTBD: Describe stable and unstable in more detail
= Development =
== Source Code Organization ==
Every module has a separate All stoney cloud related source code is located on GitHub git under https://github.com/stoney-cloud. To avoid clashes with over projects, every repository containing has the following subdefault prefix '''stoney-structure:'''.
GitHubSome operating system related examples:* Form follows functionhttps: we choose the functionality name (so we are backwards compatible)//github.com/stoney-cloud/stoney-gentoo-overlay* Modules are collected in one repository (create a skeleton module as an example)https:** Data (LDAP)** API (PHP)** Web Interface (PHP, uses API)** Provisioning (Perl, //github...)** Tests (GUI, Unitcom/stoney-Tests, ...)cloud/stoney-gentoo-portage
See the The main framework called [[Modularisation:Category:stoney core|stoney core]] page , which is responsible for detailsshared functionality (like user management, rights and roles).* https://github.com/stoney-cloud/stoney-core* https://github.com/stoney-cloud/stoney-core/api (REST API)* https://github.com/stoney-cloud/stoney-core/cli (Command Line Interface)* https://github.com/stoney-cloud/stoney-core/web (Ajax based web interface)
Every such component-directory contains Then we have the following sub[[:Category:Self-structureService Modules|Self-Service Modules]] with [[:Category:stoney backup|stoney backup]] as an example. This Self-Service Module provides an on-line backup service for desktops, servers and virtual machines.* https://github.com/stoney-cloud/stoney-backup* https://github.com/stoney-cloud/stoney-backup/api (REST '''a'''pplication '''p'''rogramming '''i'''nterface)* https://github.com/stoney-cloud/stoney-backup/cli ('''c'''ommand '''l'''ine '''i'''nterface)* https://github.com/stoney-cloud/stoney-backup/helpers (helper scripts and programmes)* https://github.com/stoney-cloud/stoney-backup/provisioning (scripts and programmes to provision services)* https://github.com/stoney-cloud/stoney-backup/web (Ajax based web interface)
* trunk* tags* branchesSee the [[Modularisation]] page for further details.
For every release of a component a tag is created in <code>== Committing /tags<Git Workflow ==We follow the Git branching model according to: http://nvie.com/posts/a-successful-git-branching-model/code>
Development is primarily done in <code>/trunk</code>. Branches are created either for maintaining a specific minor-version of the package or for developing new features (at developers discretion).
 
For doing a complete stoney cloud release, a new branch/tag is created in the component ''stoney cloud'' which contains git repository references to the corresponding tags/branches of the other components.
 
Advantage:
* clean separation (of release cycles) between components
* easier branching on a per-component basis
 
Disadvantage:
* harder to make a complete release (requires updating the references)
 
== Committing ==
Each change-set in the git repository (and thus each commit) ideally contains only one concise and consistent change.
The commit-message precisely describes the change. If the change is in respond to a bug-report or feature-request, the number of the bug-report of or feature-request is included. == Scrum Labels ==* '''Not Started''': not yet assigned to or accepted by any member.* '''Assigned''': being assigned to or accepted by a member.* '''In Progress''': being implemented.* '''To Verify''': implementation done and now it is time for testing/verifying.* '''Done''': ticket is verified.
== Testing ==
Testing is done in a clean test environment and '''not''' in a developer environment.
This means: all changes have to be committed to the git repository first and checked out from there in the test environment for proper testing.
 
* tests can be run on different levels
** framework-level (symfony/php unit tests)
** API-level:
*** JSON Schema compliance
*** client-test via [http://frisbyjs.com/ frisby.js]
== Bug-Reporting/-Workflow ==
SLB, editor, reviewer
3,368
edits