---
config:
fontFamily: "IBM Plex Sans"
gitGraph:
showCommitLabel: false
---
gitGraph
commit
commit
branch feature/001
commit
Theory, practice and demo
Devops is foundational to modernization.
Modernization of Devops is no longer a voyage of exploration.
No single tool or approach covers the entire journey to the destination.
We have a Guide… yes, it would be better if it were a map!
| Developer Experience | Old | New |
|---|---|---|
| Source Code Storage | PDS Members | UNIX/Linux Filesystem |
| Editing | ISPF | IDEs: IDZ, VSCode |
| Versioning | Package IDs | Git branches/commits |
| Process | Old | New |
|---|---|---|
| Building | JCL | Automated Pipeline scripts |
| Approval | Proprietary | Pull Requests |
| Deployment | JCL | IBM Wazi Deploy, IBM Urban Code Deploy |
Some aims and assumptions that guide our recommendations…
Well… travel light perhaps!
Planning and design activities as well as code development aim to align to a regular release cadence.
The cadence of the next planned release is defined by the application team.
Planning assumptions should aim as much as possible to complete changes quickly, ideally within one release cycle.
Every change starts in a branch.
---
config:
fontFamily: "IBM Plex Sans"
gitGraph:
showCommitLabel: false
---
gitGraph
commit
commit
branch feature/001
commit
Developers work in the branch to make changes, perform user builds and unit tests.
A branch holds multiple commits (changes to multiple files).
Every change starts in a branch.
---
config:
fontFamily: "IBM Plex Sans"
gitGraph:
showCommitLabel: false
---
gitGraph
commit
commit
branch feature/001
commit
commit
These changes on these branches are
main.mainFeature Team/Developers will:
---
config:
fontFamily: "IBM Plex Sans"
gitGraph:
showCommitLabel: false
---
gitGraph
commit
commit
branch feature/001
commit
commit
checkout main
merge feature/001
mainCreate a Pull Request (PR) to signal to Team Leaders/Release Controllers to:
main---
config:
fontFamily: "IBM Plex Sans"
gitGraph:
showCommitLabel: false
---
gitGraph
commit
commit
branch feature/001
commit
commit
checkout main
merge feature/001
main and other long-lived branches are protected (not everyone can push or merge to them).
CI/CD decouples the building and deploying to test environments and production.
We have no branches named prod (or test or QA)
Any point in the history of main can be declared a release candidate.
---
config:
fontFamily: "IBM Plex Sans"
gitGraph:
mainBranchOrder: 2
showCommitLabel: false
---
gitGraph
commit
commit
branch feature/001 order: 3
commit
commit
checkout main
merge feature/001
commit tag: "RC1"
branch maintenance/release1.1
commit tag: "Build, deploy, test"
Tag the commit (point in main’s history) with a release name.
When…
the release package can be deployed to production…
---
config:
fontFamily: "IBM Plex Sans"
gitGraph:
mainBranchOrder: 4
showCommitLabel: false
---
gitGraph
commit
commit
branch feature/001 order: 4
commit
commit
checkout main
merge feature/001
commit tag: "RC1"
branch maintenance/release2.2-RC1 order: 3
commit tag: "Build, deploy, test"
checkout main
branch feature/002 order: 4
commit
checkout main
merge feature/002
commit tag: "RC2"
branch maintenance/release2.2.0-RC2 order: 2
commit tag: "Build, deploy, test"
checkout main
commit tag: "Rel2.2"
branch maintenance/release2.2.0 order: 1
commit tag: "Build, deploy, test, release"
A release maintenance branch will be used if hot-fixes must be developed and delivered.
---
config:
fontFamily: "IBM Plex Sans"
gitGraph:
mainBranchOrder: 2
showCommitLabel: false
---
gitGraph
commit
commit tag: "rel2.1.0"
branch maintenance/rel2.1.x order: 1
commit
checkout main
commit
branch feature/001 order: 2
commit
checkout main
commit
branch feature/002 order: 1
commit
checkout main
merge feature/001
checkout maintenance/rel2.1.x
branch hotfix/001 order: 0
commit
checkout maintenance/rel2.1.x
merge hotfix/001
commit tag: "rel2.1.1"
checkout main
merge feature/002
Concurrent feature branches scale very well, but assume short cycle times.
Epic branches can collect multiple features
main(Epic branches are a form of integration branch.)
---
config:
fontFamily: "IBM Plex Sans"
gitGraph:
mainBranchOrder: 2
showCommitLabel: false
---
gitGraph
commit
checkout main
commit
branch epic/proj001/001 order: 3
commit
branch feature/proj001/004 order: 4
commit
checkout epic/proj001/001
branch feature/proj001/005 order: 5
commit
checkout feature/proj001/004
commit
checkout main
commit
branch feature/001 order: 2
commit
checkout main
branch feature/002 order: 1
commit
checkout epic/proj001/001
merge feature/proj001/004
checkout main
merge feature/001
checkout epic/proj001/001
merge feature/proj001/005
checkout feature/002
commit
checkout main
merge feature/002
branch feature/003 order: 2
commit
checkout main
merge feature/003
commit tag: "rel2.2.0"
checkout epic/proj001/001
commit tag: "continue-epic"
The principles are more important that the tools and names.
Naming conventions - making purpose obvious:
main : single source of truth. The only long-living branch.release/rel-2.0.1 : explicit versioning numbering to identify releases maintenance branch.epic/47-ai-fraud-detection : development initiative identified by epic id and description.Changes are implemented on feature branches:
feature/<jira-id|servicenow-id>-new-mortgage-calculation : references to other planning tools for new features for the next planned release.feature/47-ai-fraud-detection/refactor-mortgage-calculation: feature implemented for development initiativehotfix/rel-2.0.1/fix-mortgage-calc: fix implemented for release rel-2.0.1Names of branches and tags flow through to builds and deployments.
How do teams work with and benefit from the branch strategy?
Work and focus on the next planned release via the main branch. After planning the work items for the next release, the development team is adding changes to the main branch.
Resolution of a production problem in the currently-released version of the application by leveraging a release maintenance branch that is used for maintenance purposes,
concurrent development activities for significant development initiatives, which include multiple planned work items for a later delivery (including starting development of a future release) by creating an epic branch from a commit point in the history of main.
The following narratives complement the structure.
Developer activities:
Release control activities:
main and buildPipeline templates for the various pipeline orchestrators + common set of services that implement the recommended workflow.
zDevOps adoption enablement website - Git branching for mainframe development
A no-baggage approach to new Mainframe development practices
Pipeline templates - IBM DBB Community Repository
Videos
Check out this presentation in Github!
Submit your feedback at:
https://conferences.gse.org.uk/2025V/feedback/AG
(Make sure you are signed into MyGSE)
Copyright © 2025 IBM Corporation