The development workflow features:
before a feature enters the development team.
- Product owner writes features in aha.io
-
Product designer writes an epic for each feature
-
Product Designer writes scenarios inside Stories and groups them into Epics.
- Tester reviews and adds to scenarios
The feature enters the development team.
- In the Scrum sprint planning stories are estimated by the development team.
- At the end of the planning meeting the stories are prioritized by the Product Designer
-
Developer takes ownership in the story and starts work (write integration test) on a Story and clicks 'Start'. If during development another developer takes over, that person takes ownership
- Devloper starts a gitflow 'feature'
-
When the story is finished (all tests pass) in Pivotal clicks 'Finish'.
-
After development of the feature is finished the developer creates a pull request to the develop Branch inside BitBucket. Tick the 'close branch after merge' box. One or more relevant reviewers are added. Explain the changes in the description of the PR.
-
The Developer who has reviewed / approved will merge the change to the Develop branch, this closes the feature branch.
Release workflow TBD
-
When all the stories have finished and merged in to develop branch, the developer that reviewed the last story merges the Epic branch into Master. The Epic branch is closed. At this point the changelog.txt in the root of the project is appended with a commit description per story inside the EPIC.
-
After changes have been pushed to the test server and the tests have run successfully, he will click 'Deliver' on all stories.
-
The product owner can then review the changes on the testing server and either 'accept' or 'decline' on individual stories.
-
Decline must be accompanied with clear comments as to why it was declined.
-
When a story is declined, the responsible developer will review the comments and revise the changes and follow the procedure from #2.
COPIED FROM Google Sites:
The development workflow features:
-
Product Owner writes scenarios inside Stories and groups them into Epics.
-
Developer takes ownership in the story and starts work (write integration test) on a Story and clicks 'Start'. If during development another developer takes over, that person takes ownership
-
If the epic does not has a Epic Branch, for the project, the developer creates the branch with name of epic with underscores (snake_case) starting with 'epic_'
-
The developer will create a new Story Branch for this individual story. The name must be story title in snakecase.
-
When the story is finished (all tests pass), the code is handed over to a reviewer, in Pivotal clicks 'Finish'.
-
After development of the feature is finished the developer creates a pull request to the Epic Branch inside BitBucket. Tick the 'close branch after merge' box. One or more relevant reviewers are added. Explain the changes in the description of the PR. Squash all commits with rebase and write an accurate description of what has been done. http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html
-
The Developer who has reviewed / approved will merge the change to the Epic branch.
-
When all the stories have finished and merged in to epic branch, the developer that reviewed the last story merges the Epic branch into Master. The Epic branch is closed. At this point the changelog.txt in the root of the project is appended with a commit description per story inside the EPIC.
-
After changes have been pushed to the test server and the tests have run successfully, he will click 'Deliver' on all stories.
-
The product owner can then review the changes on the testing server and either 'accept' or 'decline' on individual stories.
-
Decline must be accompanied with clear comments as to why it was declined.
-
When a story is declined, the responsible developer will review the comments and revise the changes and follow the procedure from #2.
The development workflow isolated issues / stories:
-
Product Owner writes the scenario inside Story (bug or isolated change).
-
Developer takes ownership in the story and starts work (write integration test) on a Story and clicks 'Start'.
-
The developer will create a new Story Branch for this individual story or use the bug_fixing branch. The name must be story title in snakecase prefixed with 'bug_'.
-
When the story is finished (all tests pass), the code is handed over to a reviewer, and the developer clicks 'Finish'.
-
Squash all commits with rebase and write an accurate description of what has been done. http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html
-
The Developer who has reviewed / approved will merge the change to Master branch.
-
After changes have been pushed to the test server and the tests have run successfully, he will click 'Deliver' on the story.
-
The product owner can then review the changes on the testing server and either 'accept' or 'decline' on individual story.
-
Decline must be accompanied with clear comments as to why it was declined.
-
When a story is declined, the responsible developer will review the comments and revise the changes and follow the procedure from #
How to face change in DB:
First, it is useful read this document where doctrine devs advise how to use the library to face this problems.
If there is not any way to keep or extend the structure, and we are sure to have to change Db structure the procedure is:
1. Create a DB script in api migrations folder with a identifying name
2. Create two scripts(up and down) in order to allow rollbacks.
3. Test deploy and rollback with the script created.
4. Specify inside body commit the necessity of running this script. Look our doc about git here.
Git deployment workflow with BitBucket:
create a cb_deploy repository that holds all the deploy scripts to make sure we all have the same scripts.
phase 1:
-
rsync exclude files for all
-
well commented deploy scripts
-
this section in README.md
-
scripts deploy_operator/manager/xmpp_node/v3/logging from local tst environment
-
scripts deploy_operator/manager/xmpp_node/v3/logging from tst prod environment
-
rsync prod deploy scripts
-
Use procedure below 'manual deployment' for instructions on individual projects.
phase 2:
-
create dev environment (vhost) on tst server
-
scripts deploy_operator/manager/xmpp_node/v3/logging from local dev environment
-
add to deploy script:
-
developer name
-
timestamp
-
run integration tests before deploy
-
roll back possibility / zero downtime deployment
-
add inline backup.tar.bz on server (see v2 deploy)
For each Major version a branch will be created, i.e. v0, v1.
(hopefully we can move towards Continues Integration and Deployment)
Manual deployment:
To update V3:
-
ssh cobrowser_deploy@cbng0.tst.cobrowser.net (make sure your public key is on the server)
-
cd /releases/CBNG0/
-
copy these to the testing server with something like this:
-
rsync -avz -e ssh --exclude-from /home/john/dev_partition/v3Exclude /home/john/dev_partition/v3/ cobrowser_deploy@cbngo.tst.cobrowser.net:/var/app/core/CBNG0
-
clear the cache -> app/console cache:clear
-
OPTIONAL: run php ./bin/createEnvironment.php
-
logout
To update CB_manager:
-
Compile application for deployment (you should be on master branch): where you normally run 'grunt serve', now run 'grunt serve:dist' and you should get (an updated) 'dist' folder in the root of the cb_manager project.
-
Quickly check that this works locally, so we exclude minification issues.
-
copy these to the testing server with something like this:
rsync -avz -e ssh --exclude-from /home/john/dev_partition/cbmExclude /home/john/dev_partition/cb_manager/dist/ cobrowser_deploy@cbngo.tst.cobrowser.net:/releases/cb_manager/
cbmExclude looks like this:
.git
.idea
config/config.js
atlassian-ide-plugin.xml
scripts/config/config.js
To update CB_Operator:
-
Compile application for deployment (you should be on master branch): where you normally run 'grunt serve', now run 'grunt serve:dist' and you should get (an updated) 'dist' folder in the root of the cb_operator project.
-
Quickly check that this works locally, so we exclude minification issues.
-
copy these to the testing server with something like this:
rsync -avz -e ssh --exclude-from /home/john/dev_partition/cbmExclude /home/john/dev_partition/cb_manager/dist/ cobrowser_deploy@cbngo.tst.cobrowser.net:/releases/cb_operator/
Comments
0 comments
Please sign in to leave a comment.