GitHub Flow Way-Of-Work
Created: April 17, 2026
Introduction
In order to understand the intent of this way of work you can take a look on the following links:
The implementation described here is a simplified variant of the GitFlow model. It removes the develop and support branches to streamline the workflow for teams that prefer a single long-lived branch (master / main) as the integration target for all work. All feature and hotfix flows are directed straight to master / main. Versioning is managed automatically through +semver: commit message patterns defined in .cloudopsworks/.gitversion.yaml — there are no manual release branches.
General Rules:
- Direct commits to
master/mainbranch are Not allowed. - All development starts from
master/main— there is nodevelopbranch. - Feature and hotfix branches both merge back to
master/mainonly. - Continuous deployment targets (alpha/develop) are not used in this workflow.
- Version increments are driven by
+semver:patterns in commit messages — no release branches needed.
The GitHub Flow way-of-work with Tronador Accelerator uses the same two-step publishing model:
- Flow Creation (hotfix / feature) done locally.
- Publishing to remote repository (GitHub)
Is at the entire responsibility of the developers to coordinate this way of work related to the flows created, must be done by a designated developer in each case and proceed with the publishing, the rest of the team then can sync up with the remote repository.
Configuration
Configuration of CI/CD is performed through the cloudopsworks-ci.yaml file. The section dedicated to this is under cd.deployments each one of the flows goes to a specific deployment. This configuration may be done mostly by your DevOps/SRE.
Deployments / Effect / Triggers:
- release: Release happens when a version got merged and tagged on master branch, driven by
+semver:patterns in commit messages. SemVer have this formatvX.X.X- Manually
- Automatic
- test: Test environment deployment is done when a hotfix branch is created or a quick-fix is pushed to the hotfix branch. SemVer have this format:
vX.X.X-beta.YY-ZZZZ - prerelease: Pre Release environment is deployed when a version is tagged from the hotfix branch. SemVer format:
vX.X.X-beta.YY
Note: There is no
develop(alpha) deployment target in GitHub Flow. Pre-production testing is handled throughtestandprereleasestages on hotfix branches only.
Preview Environments
- Available only on select Pull Requests
- From hotfix branches to
master/main - From feature branches to
master/main
- From hotfix branches to
Version Management
Versions are automatically computed from commit messages using +semver: patterns configured in .cloudopsworks/.gitversion.yaml. No manual release branch creation is needed — simply include the appropriate pattern in your commit message before merging to master / main.
+semver: Commit Message Patterns
| Pattern in Commit Message | Alias | Effect | Resulting SemVer |
|---|---|---|---|
+semver: major | +semver: breaking | Bumps the major version, resets minor and patch to 0 | vX+1.0.0 |
+semver: minor | +semver: feature | Bumps the minor version, resets patch to 0 | vX.Y+1.0 |
+semver: patch | +semver: fix | Bumps the patch version only | vX.Y.Z+1 |
+semver: none | +semver: skip | No version change; useful for docs or chore commits | vX.Y.Z |
Example Commit Messages
feat: add user authentication +semver: minor
fix: resolve null pointer on login +semver: patch
chore: update README +semver: none
refactor!: rework auth module with breaking API changes +semver: major
The
+semver:pattern can appear anywhere in the commit message body or subject. The pattern is evaluated when the PR is merged tomaster/main.
Working with code
What is needed
To use the following automated process it is required to use any of the following repository templates:
- NodeJS Template (soon)
- Java Template (soon)
- Python Template (soon)
- GoLang Template (soon)
- .Net Template (soon)
- Rust Template (soon)
- XCode Template (soon)
- Terraform IAC Template
- Terragrunt Modular IAC Template
These templates ensure that the proper branch protection gets in place as per the configuration described in previous section.
In the case of using it manually as well from a blank project you can do the following, taking into account that you may not be able to leverage the CI/CD features.
- Create a file named
Makefile - Add the following entries to your
.gitignorefile:tronador/.tronador
- Paste the following code into the file and you are ready to go:
TRONADOR_AUTO_INIT := true -include $(shell curl -sSL -o .tronador "https://cowk.io/acc"; echo .tronador)
No initialization step is required. Unlike GitFlow, there is no
developbranch to create. Repositories created from the templates above are ready to use immediately.
Feature Branches
Feature branches are created directly from master / main and merged back to master / main via pull request.
Steps:
- Create the feature branch, feature name must not contain any whitespaces.
make gitflow/feature/start-no-develop:<feature-name>
- Publish the feature branch to GitHub repository, remember that this action must be done while working on the feature branch (it validates this condition). This action can also be used to push all commits on the local branch to the remote GitHub repo:
make gitflow/feature/publish- If you are not on the feature branch and want to push the changes on the feature you can issue the command:
make gitflow/feature/publish:<feature-name>
- Work normally on the Feature locally and push changes to GitHub.
- Include the appropriate
+semver:pattern in your final commit message to control the version bump on merge (see Version Management). - To trigger a preview environment and open the pull request against
master/main:make gitflow/feature/finish-no-develop
This process will create a pull request against master / main in order to create the preview environment and to review all changes made. Merging the PR completes the feature and deletes the feature branch.
Additional commands:
- To purge a failed or abandoned feature branch:
make gitflow/feature/purge:<feature-name>
Post-Release
Release Tagging
These operations are exclusive for alternate targets for release deployments already done by the default release target.
- Tag release with specific deployment qualifier:
make gitflow/version/tag:<qualifier>
This qualifier will be used to tag the release, eg: v3.1.0+deploy-target1.
This will make the build to look-out the configuration on deployment.release.targets entry in the cloudopsworks-ci.yaml configuration file.
- Publish the release independently of the way was created:
make gitflow/version/publish
Hot-Fix
Hotfix branches are used when you need to do a patch release and are always created from master / main.
Steps:
- Creates the hotfix branch, infers the version number from the last commit and Git commit tree:
make gitflow/hotfix/startCreates a patch release. If you need a major release this is not the process.
- Publish the hotfix branch to GitHub repository, remember that this action must be done while working on the hotfix branch (it validates this condition). This action can also be used to push all commits on the local branch to the remote GitHub repo:
make gitflow/hotfix/publish
- Publishing will trigger the build and deployment to the designated environment on the test deployment target in
cloudopsworks-ci.yaml. - Work normally on the Hotfix locally and push changes to GitHub. You have to be aware of the following:
- Each commit and further push will reach the designated test environment and generate incremental
-beta.Xversions. - You can perform a Version tagging in order to trigger a deployment into the designated prerelease target. Refer to
cloudopsworks-ci.yamlconfiguration.
- Each commit and further push will reach the designated test environment and generate incremental
- To close the hotfix and perform the merge into
master/mainonly:make gitflow/hotfix/finish
This process will create a pull request against master / main. If the merge is possible, it will be done automatically; if there are conflicts, they must be resolved within the PR process. The hotfix branch is deleted upon merging.
Additional Commands:
- To do the hotfix merge locally with manual conflict resolve, not recommended for newbies.
make gitflow/hotfix/finish/local
Pre Release Tagging
These operations are very important to achieve the objective of point 4.b above.
- Tag pre-release, this tagging increments properly the
beta.1,beta.2, etc. sequence.make gitflow/version/tag
- Tag pre-release with specific deployment qualifier:
make gitflow/version/tag:<qualifier>
This qualifier will be used to tag the pre-release, eg: -beta.1+deploy-target1.
This will make the build to look-out the configuration on deployment.prerelease.targets entry in the cloudopsworks-ci.yaml configuration file.
- Publish the pre-release independently of the way was created:
make gitflow/version/publish