Skip to content

Versioning tools

Versioning Tools

We use GitHub Actions workflow to deploy the main branch to the Droplet server.


Versioning Tools

  • Semantic Versioning
  • bumpver / pyproject.toml
  • GitHub Actions Workflow

1. Semantic Versioning

We follow Semantic Versioning. For more information, please view the website.


2. bumpver / pyproject.toml

We use bumpver to automate our versioning. Using the bumpver command updates the project version number in pyproject.toml.

  • pyproject.toml must be located in arctyk/pyproject.toml (the project's root directory).
  • bumpvar is installed with the following command:
pip install bumpver

Options

There are different options available to use with bumpver:

  1. To bump a patch version: bumpver update --patch
  2. To bump a minor update: bumpver update --minor
  3. To bump a major update: bumpver update --major

Example usage:

bumpver update --patch

pyproject.toml

Here's the pyproject.toml configuration as of v0.4.0:

[tool.black]

line-length = 88

target-version = ["py312"]

exclude = "migrations/"



[tool.isort]

profile = "black"

line_length = 88

combine_as_imports = true

include_trailing_comma = true

skip_gitignore = true



[tool.bumpver]

current_version = "0.4.0"

version_pattern = "MAJOR.MINOR.PATCH[-TAG.NUMBER]"

commit_message = "chore(release): v{new_version}"

tag_message = "v{new_version}"

tag_scope = "default"



[tool.bumpver.file_patterns]

"pyproject.toml" = [

  'version = "{version}"'

]



"src/config/__init__.py" = [

  '__version__ = "{version}"'

]



"package.json" = [

  '"version": "{version}"'

]



"package-lock.json" = [

  '"version": "{version}"'

]



"Dockerfile" = [

  'version="{version}"'

]



[project]

version = "0.4.0"

requires-python = ">=3.10,<3.14"

Instructions

The following commands demonstrate how to use to bumpver correctly with Arctyk ITSM.

Daily development (dev builds)

Start development on a new minor:

bumpver update --minor --tag dev --tag-num 0

Result:

0.4.0  0.5.0-dev.0

Increment dev build:

bumpver update --tag-num

Result:

0.5.0-dev.0  0.5.0-dev.1

Dev → Alpha → Beta → RC → Stable (release flow)

Dev → Alpha:

bumpver update --tag alpha --tag-num 0

Result:

0.5.0-dev.4  0.5.0-alpha.0

Increment alpha:

bumpver update --tag-num

Result:

0.5.0-alpha.0  0.5.0-alpha.1

Alpha → Beta:

bumpver update --tag beta --tag-num 0

Result:

0.5.0-alpha.3  0.5.0-beta.0

Increment Beta:

bumpver update --tag-num

Beta → RC:

bumpver update --tag rc --tag-num 0

Result:

0.5.0-beta.2  0.5.0-rc.0

RC → Stable:

bumpver update --tag ""

Result:

0.5.0-rc.1  0.5.0

Patch releases (hotfixes)

Stable patch:

bumpver update --patch

Result:

0.5.0  0.5.1

Patch with dev cycle

bumpver update --patch --tag dev --tag-num 0

Result:

0.5.0  0.5.1-dev.0

Major release (breaking changes)

bumpver update --major

Result:

0.9.3  1.0.0

Or immediately into dev:

bumpver update --major --tag dev --tag-num 0

Result:

0.9.3  1.0.0-dev.0

bumpver update --tag beta --tag-num 0 --dry

PowerShell quality-of-life aliases (optional)

Add to your PowerShell profile:

Set-Alias bv bumpver

function bv-dev { bumpver update --tag dev --tag-num }
function bv-alpha { bumpver update --tag alpha --tag-num 0 }
function bv-beta { bumpver update --tag beta --tag-num 0 }
function bv-rc { bumpver update --tag rc --tag-num 0 }
function bv-release { bumpver update --tag "" }

Usage:

bv-dev
bv-beta
bv-release

What happens automatically (your setup)

When you run any of the above, bumpver will:

  • Update pyproject.toml
  • Update src/config/__init__.py
  • Update package.json
  • Update package-lock.json (if present)
  • Update Docker labels
  • Create a Git commit
  • Create a Git tag

Exactly what you wanted.


Current phase (UI + architecture changes):

bumpver update --minor --tag dev --tag-num 0

When UI stabilizes:

bumpver update --tag alpha --tag-num 0

Before user testing:

bumpver update --tag beta --tag-num 0

Pre-production:

bumpver update --tag rc --tag-num 0

Release:

bumpver update --tag ""