34
BEXIS Tech Talk Series #7: Configuration and Change Management Javad Chamanara October 2016 Jena, Germany

7 Source Control and Release Management

  • Upload
    javadch

  • View
    69

  • Download
    1

Embed Size (px)

Citation preview

Page 1: 7 Source Control and Release Management

BEXIS Tech Talk Series

#7: Configuration and Change Management

Javad ChamanaraOctober 2016Jena, Germany

Page 2: 7 Source Control and Release Management

2BEXIS Tech Talk #7: Configuration and Change Management

Reminder: The CM

DataMetadata

Data StructureMetadata Structure Semantics Geo

Administration Security

«use»

«use»

«use» «use»

«use»

Page 3: 7 Source Control and Release Management

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

Page 4: 7 Source Control and Release Management

4BEXIS Tech Talk #7: Configuration and Change Management

The Application’s Elements

• Core• Modules• Contributions• 3rd Party Libraries

Page 5: 7 Source Control and Release Management

5BEXIS Tech Talk #7: Configuration and Change Management

Configuration and Change Management

• Change Management• Source Control• Release Management

Page 6: 7 Source Control and Release Management

6BEXIS Tech Talk #7: Configuration and Change Management

Change Management

• Agile– Scrum

• MS TFS– Backlogs– Tasks– Change Requests– Sprints

Page 7: 7 Source Control and Release Management

7

Change Management

• Product backlog• Release backlog• Sprint backlog• Work Item assignment

BEXIS Tech Talk #7: Configuration and Change Management

Page 8: 7 Source Control and Release 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

Page 9: 7 Source Control and Release Management

9BEXIS Tech Talk #7: Configuration and Change Management

Source Control

• Isolation– Bug fixes– Releases– New Features– Developer work

Page 10: 7 Source Control and Release Management

10BEXIS Tech Talk #7: Configuration and Change Management

Source Control

• Integration– Merging isolated work– Propagating fixes and features– Promoting quality

Page 11: 7 Source Control and Release Management

11BEXIS Tech Talk #7: Configuration and Change Management

Source Control

• Use commits for change preservation• Use branches for isolation• Use merging for integration

Page 12: 7 Source Control and Release Management

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

Page 13: 7 Source Control and Release Management

13

Branches

BEXIS Tech Talk #7: Configuration and Change Management

Master

DEV

Modules/DCM Modules/RPM

Components/DLM Components/EXT

Components/DLM

_Data

Page 14: 7 Source Control and Release Management

14BEXIS Tech Talk #7: Configuration and Change Management

The Master Branch

• Is used for safe keeping• No coding, no changes• All test cases pass!

Page 15: 7 Source Control and Release Management

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

Page 16: 7 Source Control and Release Management

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

Page 17: 7 Source Control and Release Management

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

Page 18: 7 Source Control and Release Management

18BEXIS Tech Talk #7: Configuration and Change Management

Tooling

• GIT• TFS VC– GIT integration

• Github• Visual Studio

Page 19: 7 Source Control and Release Management

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

Page 20: 7 Source Control and Release Management

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

Page 21: 7 Source Control and Release Management

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

Page 22: 7 Source Control and Release Management

22BEXIS Tech Talk #7: Configuration and Change Management

Release Materials

• Binary code• Source code• Documentation• Sample Demo Site• Initial Data/Workspace• DB Scripts

Page 23: 7 Source Control and Release Management

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

Page 24: 7 Source Control and Release Management

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

Page 25: 7 Source Control and Release Management

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

Page 26: 7 Source Control and Release Management

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.

Page 27: 7 Source Control and Release Management

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

Page 28: 7 Source Control and Release 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

Page 29: 7 Source Control and Release Management

29

The Github Repository

• https://github.com/BEXIS2• Updated after major releases

BEXIS Tech Talk #7: Configuration and Change Management

Page 30: 7 Source Control and Release 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

Page 31: 7 Source Control and Release Management

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

Page 32: 7 Source Control and Release Management

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

Page 33: 7 Source Control and Release Management

33BEXIS Tech Talk #7: Configuration and Change Management

Outlook

What‘s next in the talk series?

Implementation Notes

Page 34: 7 Source Control and Release Management

34BEXIS Tech Talk #7: Configuration and Change Management

34

Thanks!Questions?

Contact:[email protected]://bexis2.uni-jena.de

Acknowledgment