7 source control and release management
TRANSCRIPT
BEXIS Tech Talk Series
#7: Configuration and Change Management
Javad ChamanaraOctober 2016Jena, Germany
2BEXIS Tech Talk #7: Configuration and Change Management
Reminder: The CM
DataMetadata
Data StructureMetadata Structure Semantics Geo
Administration Security
«use»
«use»
«use» «use»
«use»
3BEXIS Tech Talk #7: Configuration and Change Management
Reminder: The Architecture
DB2 PgS
Data Access
Security
Core Functions
UI
UI Framework
...
Modularity
Integration
Synthesis Work
Semantic Search
Analytics
User Defined
Spatial Querying
External Tools
Web Services
Archiving
Import/ Export
Publishing
4BEXIS Tech Talk #7: Configuration and Change Management
The Application’s Elements
• Core• Modules• Contributions• 3rd Party Libraries
5BEXIS Tech Talk #7: Configuration and Change Management
Configuration and Change Management
• Change Management• Source Control• Release Management
6BEXIS Tech Talk #7: Configuration and Change Management
Change Management
• Agile– Scrum
• MS TFS– Backlogs– Tasks– Change Requests– Sprints
7
Change Management
• Product backlog• Release backlog• Sprint backlog• Work Item assignment
BEXIS Tech Talk #7: Configuration and Change Management
8BEXIS Tech Talk #7: Configuration and Change Management
Source Control
With a source control system:• Changes to the artifacts are preserved• Changes can be done in isolation• Changes are eventually integrated
9BEXIS Tech Talk #7: Configuration and Change Management
Source Control
• Isolation– Bug fixes– Releases– New Features– Developer work
10BEXIS Tech Talk #7: Configuration and Change Management
Source Control
• Integration– Merging isolated work– Propagating fixes and features– Promoting quality
11BEXIS Tech Talk #7: Configuration and Change Management
Source Control
• Use commits for change preservation• Use branches for isolation• Use merging for integration
12BEXIS Tech Talk #7: Configuration and Change Management
Branching Approach
• Branch for Team Members• Branch for Features• Branch for Architectural elements• Branch for Releases• Branch for Safekeeping• Ad-hoc Branching– Risky features– Complex bugs during releases– Temporary work: refactoring, framework upgrades
13
Branches
BEXIS Tech Talk #7: Configuration and Change Management
Master
DEV
Modules/DCM Modules/RPM
Components/DLM Components/EXT
Components/DLM
_Data
14BEXIS Tech Talk #7: Configuration and Change Management
The Master Branch
• Is used for safe keeping• No coding, no changes• All test cases pass!
15BEXIS Tech Talk #7: Configuration and Change Management
The DEV Branch
• Integration Branch• Always for the next release• No coding here• Code always compiles!• Integration tests pass!• Occasional changes for conflict resolution:– Configuration– Merge
16BEXIS Tech Talk #7: Configuration and Change Management
The Module Branches
• Adding new features to next releases• Unit tests pass!• Branch name: modules/<moduleID>• Forked from the DEV branch• Get merged from DEV first• Merge into DEV• May be locked during releases
17BEXIS Tech Talk #7: Configuration and Change Management
The Component Branches
• Adding new features to next releases• Unit tests pass!• Branch name: components/<componentID>• Forked from the DEV branch• Get merged from DEV first• Merge into DEV• May be locked during releases
18BEXIS Tech Talk #7: Configuration and Change Management
Tooling
• GIT• TFS VC– GIT integration
• Github• Visual Studio
19BEXIS Tech Talk #7: Configuration and Change Management
Policies & Practices
• Branches can be used by more than one developer
• Developers may work on more than one branch
• Branches may have ad-hoc/temporary sub-branches
20BEXIS Tech Talk #7: Configuration and Change Management
Policies & Practices
• Work in isolation• Get upper changes ASAP• Pull before Push• Fix issues on deepest (or isolated) branch• Maintain target branch’s quality after merging
21BEXIS Tech Talk #7: Configuration and Change Management
Releases
• To publish a coherent set of working artifacts– A set of chosen features– From the release backlog– Every 3-4 months
22BEXIS Tech Talk #7: Configuration and Change Management
Release Materials
• Binary code• Source code• Documentation• Sample Demo Site• Initial Data/Workspace• DB Scripts
23BEXIS Tech Talk #7: Configuration and Change Management
Builds under Control, too!
• Bundling Scripts– Compilation– DB change scripts– Document/Manual Formatting (PDF, HTML)– Branding Information– Commands– Packaging
24BEXIS Tech Talk #7: Configuration and Change Management
Branching for Release
• Release branch is:– forked from DEV• Name: /releases/<x>.<y>
– Used for stabilizing the designated feature set– Used by all the release team members– Is built daily– Is staged daily (for testing)– Is tagged, bundled, and published
25
Branching for Release
BEXIS Tech Talk #7: Configuration and Change Management
Master
DEV
R1
Released V1.0 Released V1.1
R2
Released V2.1Released V2.0
26BEXIS Tech Talk #7: Configuration and Change Management
Release Branching
• Is used to isolate other branches, releases, and the development from the changes.
• Supports multiple alive releases– Previously released ones– The current one
• Allows previous releases reproduction• Permits exact version bug assignment, fixing,
and promotion.
27
Release Integration
• Merge all module and component branches to DEV
• Create the release branch from DEV• Do not merge again from DEV during release– Necessary cases can be handled with care!– Merge to DEV is safe
BEXIS Tech Talk #7: Configuration and Change Management
28BEXIS Tech Talk #7: Configuration and Change Management
Release Integration
• Promote the release code– Realases/<x.y> DEV– DEV module branches– DEV component branches– DEV master
• Tag branches accordingly
29
The Github Repository
• https://github.com/BEXIS2• Updated after major releases
BEXIS Tech Talk #7: Configuration and Change Management
30BEXIS Tech Talk #7: Configuration and Change Management
Public Repository
Master
DEV
R1
Released V1.0 Released V1.1
R2
Released V2.1Released V2.0
Github Repo: master
V1.0
V1.1
V2.0
V2.1
31
The Public Repository
• Open Source• Fork• Pull Request• Feature Request• Bug Reporting
BEXIS Tech Talk #7: Configuration and Change Management
https://github.com/BEXIS2
1: <Mailto: [email protected]> <Subscribe to: https://lserv.uni-jena.de/mailman/listinfo/bexis2-dev>
1
1
32
Contribution Projects
• Use the public repository• Pull the released versions• Develop on top of them• Publish their contribution freely• Share their enhancements with us
BEXIS Tech Talk #7: Configuration and Change Management
33BEXIS Tech Talk #7: Configuration and Change Management
Outlook
What‘s next in the talk series?
Implementation Notes
34BEXIS Tech Talk #7: Configuration and Change Management
34
Thanks!Questions?
Contact:[email protected]://bexis2.uni-jena.de
Acknowledgment