The evo-crypter
project uses Semantic Versioning (SemVer) as its core versioning scheme. This document outlines how version numbers are assigned, the different types of branches used, and the automated workflows that manage version updates.
We adhere to the SemVer specification, which means that a version number is composed of three parts:
The evo-crypter
project employs the following branching model:
main
:** The main branch represents the latest stable release of the software. Merges to main
typically trigger a new release and are associated with a version bump.dev
:** The development branch is where new features and bug fixes are integrated before being released to main
.feature/
branches:** Feature branches are created to develop new features. They branch off from dev
and are merged back into dev
when the feature is complete and tested.release/
branches:** Release branches are used to prepare for a new major release. They branch off from dev
and are merged into both main
and dev
when the release is ready.hotfix/
branches:** Hotfix branches are used to address critical bugs in production releases. They branch off from main
and are merged back into both main
and dev
when the hotfix is complete.The evo-crypter
project utilizes GitHub Actions to automate the version update process. The following workflows are defined:
This workflow is triggered when a pull request is opened, reopened, or synchronized against the main
or dev
branch or any other branch. It performs the following actions:
version.txt
file.main
and the head branch is dev
:main
and the head branch starts with release/
:main
and the head branch starts with hotfix/
:dev
:version.txt
file with the new version.version.txt
with a message like "chore: Bump version to X.Y.Z".This workflow is triggered when changes are pushed to the main
branch. It handles the build and release process:
version.txt
file.vX.Y.Z
). The executable (build/evo
) is attached to the release.This workflow is triggered on pull requests targeting the main
, dev
and any other branch. It performs the following checks:
This workflow is triggered on pushes to branches other than main
. It performs the following actions:
While the workflows automate most version updates, you can manually update the version number by editing the version.txt
file and running the scripts/update_version.sh
script. This script also allows you to create and push a Git tag for the new version.
Example:
This will update version.txt
to 0.3.0
, create a Git tag v0.3.0
, and optionally push the tag to the remote repository.
update-version.yml
workflow requires appropriate permissions to push to branches. Ensure that your repository settings allow GitHub Actions to create and approve pull requests and that the workflow has write permissions.main
, make sure they don't prevent the workflow from pushing to pull request branches. You might need to add an exception for the GitHub Actions user.