A Release and Deploy Strategy is an essential part of Software Delivery Workflow. Not all Commits need to make it to deployment or release. A versioning system is also a cornerstone of this workflow. Hence a strategic approach is required to keep commits and deployment workflows separate. Currently, on a commit to the deploy branch triggers the deployment to Azure which is fine till a separate feature branch exists, but maintaining separate feature branches get tougher with project growing, hence thus Workflow too needs to be triggered only by specific actions like a version tagging or release.
There are three deployments that are to be put into this strategy -
- Automated GitHub Releases on Git Version Tagging
- Automated Dockerization and Deployment to GitHub Packages for Containers
- Deployment to Azure (this will be deprecated/torndown Soon)
[Checkpoints]
[Issues]
[JFYI]
Versioning
A proper versioning system that should be used in this project is
In the Above
- Major - Major Feature Additions, Breaking API Changes and other Major Changes that can effect the dependant systems.
- Minor - Minor Feature Additions, Backward Compatible, Usage Experience Enhancements and Minor Changes.
- Patch - Bug Fixes, Backward Compatible and Enhancement Fixes and Changes.
- target - Build Targets (OS Specific/OS Version Specific/Architecture Specific Targets) or pre-releases (beta/alpha) or audience/user Targets (general/Pro/internal/etc.)
Refer to semver.org or versioning section in notes
Adopted Strategy
Strategy B, triggers builds/workflows only if the version tagged and committed is a Major or Minor Update as well as Patch updates - so that both Feature-Ready/Feature-full releases and Bug Fixes are published to the artefacts.
On the other hand this strategy may also lead to frequent adoption changes on the user end.
Strategy B

A Release and Deploy Strategy is an essential part of Software Delivery Workflow. Not all Commits need to make it to deployment or release. A versioning system is also a cornerstone of this workflow. Hence a strategic approach is required to keep commits and deployment workflows separate. Currently, on a commit to the
deploybranch triggers the deployment to Azure which is fine till a separate feature branch exists, but maintaining separate feature branches get tougher with project growing, hence thus Workflow too needs to be triggered only by specific actions like a version tagging or release.There are three deployments that are to be put into this strategy -
[Checkpoints]
v0.1.0-alpha, First Release with the Workflow.[Issues]
[JFYI]
Versioning
A proper versioning system that should be used in this project is
In the Above
Refer to semver.org or versioning section in notes
Adopted Strategy
Strategy B, triggers builds/workflows only if the version tagged and committed is a Major or Minor Update as well as Patch updates - so that both Feature-Ready/Feature-full releases and Bug Fixes are published to the artefacts.On the other hand this strategy may also lead to frequent adoption changes on the user end.
Strategy B