diff options
author | Michael Holler <mike.holler@vgbio.com> | 2017-11-22 16:46:00 -0600 |
---|---|---|
committer | Mike Holler <mike.holler@physiq.com> | 2017-11-27 13:14:33 -0600 |
commit | 0c8b4c7614db57a5f2f56b72f79d7dedd787a006 (patch) | |
tree | 939b92865908c9bd8cbdb50e8412ae7e95cb2e76 /python | |
parent | 34aea4361f829d3e4f1e4d50324e155ad4adec67 (diff) | |
download | flatbuffers-0c8b4c7614db57a5f2f56b72f79d7dedd787a006.tar.gz flatbuffers-0c8b4c7614db57a5f2f56b72f79d7dedd787a006.tar.bz2 flatbuffers-0c8b4c7614db57a5f2f56b72f79d7dedd787a006.zip |
Add support for Python lib continuous deployment.
Use a combination of travis and twine to publish to PyPI. New
publications will be made:
* When `master` is updated. This will trigger the publication of a
the Python artifact versioned an iso-compliant build datetime. In this
way, the cutting edge version will always be available via PyPI.
* When a new git tag is pushed. Tag pushes trigger the publication of
a python artifact with the same version as the git tag, with the
leading `v` stripped if present (`v1.2.3` becomes `1.2.3`).
Publications rely on Travis having a PYPI_PASSWORD environment set in
the project settings. See the Travis CI documentation for information on
[setting environment variables which containing sensitive data][1]. Make
extra sure the "Display value in build log" switch is OFF.
In addition to setting the previously mentioned `PYPI_PASSWORD`
environment variable, the owner of the PyPI `flatbuffers` repository
should, after merging this commit into master, add his own commit to
change `mikeholler` in `.travis/deploy-python.sh` to his username. It's
also recommended that the owner of `flatbuffers` use a separate account
in the unlikely event that the environment variable somehow becomes
compromised. Again, this is very unlikely, since the environment
variable is only set for "safe" builds approved by maintainers (not on
random pull requests).
[1]: https://docs.travis-ci.com/user/environment-variables/#Defining-Variables-in-Repository-Settings
Diffstat (limited to 'python')
-rw-r--r-- | python/.gitignore | 2 | ||||
-rw-r--r-- | python/setup.py | 29 |
2 files changed, 30 insertions, 1 deletions
diff --git a/python/.gitignore b/python/.gitignore new file mode 100644 index 00000000..a7719469 --- /dev/null +++ b/python/.gitignore @@ -0,0 +1,2 @@ +/dist/ +/*.egg-info/ diff --git a/python/setup.py b/python/setup.py index 39afef34..5aadef44 100644 --- a/python/setup.py +++ b/python/setup.py @@ -12,11 +12,38 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os +from datetime import datetime from setuptools import setup + +def version(): + version = os.getenv('VERSION', None) + if version: + # Most git tags are prefixed with 'v' (example: v1.2.3) this is + # never desirable for artifact repositories, so we strip the + # leading 'v' if it's present. + return version[1:] if version.startswith('v') else version + else: + # Default version is an ISO8601 compiliant datetime. PyPI doesn't allow + # the colon ':' character in its versions, and time is required to allow + # for multiple publications to master in one day. This datetime string + # uses the "basic" ISO8601 format for both its date and time components + # to avoid issues with the colon character (ISO requires that date and + # time components of a date-time string must be uniformly basic or + # extended, which is why the date component does not have dashes. + # + # Publications using datetime versions should only be made from master + # to represent the HEAD moving forward. + version = datetime.utcnow().strftime('%Y%m%d%H%M%S') + print("VERSION environment variable not set, using datetime instead: {}" + .format(version)) + + return version + setup( name='flatbuffers', - version='2015.05.14.0', + version=version(), license='Apache 2.0', author='FlatBuffers Contributors', author_email='me@rwinslow.com', |