TWReever
TWReever

Reputation: 357

Set Python wheel version tag dynamically

I'm trying to integrate building of a wheel file into a Bamboo plan. Ultimately, I'd like to tie part of the version tag of the .whl file to the Bamboo build number in someway, i.e. the pre-release for version 0 would be 0.dev1, 0.dev2, 0.dev3 for successive builds.

The old egg format used to allow the --tag_build option, which would allow you to specify a tag that is appended to the version parameter defined in the setup function in the setup.py file. The bdist_wheel command apparently doesn't have an equivalent option.

This dashed my hopes of running setup.py from a script, using the Bamboo build number variable. I'm looking for any other suggestions other than either converting the build script to Powershell, or generating setup.py on the fly each build.

Upvotes: 4

Views: 6411

Answers (1)

jwodder
jwodder

Reputation: 57590

The version tag in the wheel filename is just the package version number, defined by setup.py, and setup.py is a Python script with all the power of Python available to it. Thus, setup.py can simply set the version parameter of the setup() function based on the bamboo_buildNumber environment variable:

import os

version = whatever_the_version_would_be_otherwise
try:
    version += '.dev' + os.environ['bamboo_buildNumber']
except KeyError:  # bamboo_buildNumber isn't defined, so we're not running in Bamboo
    pass

setup(
    version = version,
    ...
)

Upvotes: 7

Related Questions