Skip to main content

Utility for creating and uploading zip packages

Project description

|Release| |License| |Travis|

Overview
--------

The release-manager is a Python utility for easily uploading zipped
binaries to a destination target. It allows you to:

- Create new package versions
- Upload artifacts to said version
- Currently only support zip
- Upload to multiple targets
- Currently only supports Bintray
- Combine N binaries into the artifact that is then uploaded
- Upload N artifacts to for the package

Installing
----------

- Option 1: Download this repository and run:
``python setup.py install``
- Option 2: Install from pip: ``pip install release-manager``

Usage
-----

::

usage: release-manager.py [-h] [--config CONFIG] [--make-version]
[--make-artifact] [--upload-artifact]
[--check-version] [--version]

Bintray utility for creating and uploading zip packages.

optional arguments:
-h, --help show this help message and exit
--config CONFIG the path to the configuration yaml file
--make-version makes a new version for the package
--make-artifact makes the artifacts that will be uploaded
--upload-artifact uploads the artifacts to the targets
--check-version checks that the version specified matches the build
--version show program's version number and exit

Please note when specifying the options to run that they will be applied
to every package in your config file.

Options:

- You cannot upload the artifacts without also making the artifacts:
- ``--upload-artifact`` requires ``--make-artifact``
- Checking the version is useful for automated build tools such as
travis to assert that you have the correct build versions specified

Config
~~~~~~

The release-manager requires a config be passed to it in the form of a
yaml file. You can find a sample config in the **resources** directory.

Environment resolver
^^^^^^^^^^^^^^^^^^^^

To get values from the environment at runtime set the value like the
following:

::

some_env_key: <%= ENV['SOME_ENV_VALUE'] %>

Shell resolver
^^^^^^^^^^^^^^

To evaluate a shell command at runtime set the value like the following:

::

some_cmd_value: <%= CMD['cat VERSION'] %>

**NOTE**: If the command does not exit with code 0 the config will not
load.

Variable resolver
^^^^^^^^^^^^^^

If you need to access a variable many-times in your config and it is okay
for it to be hardcoded you can use the local variable resolver.

This works like so:

::

some_var_value: "hello_world"
some_ref_var_value: {{ some_var_value }}

Example config
^^^^^^^^^^^^^^

::

# Required: local settings
local:
root_dir : <%= ENV['TRAVIS_BUILD_DIR'] %>

# Required: deployment targets
targets:
- type : "bintray" # Options: bintray
user : <%= ENV['BINTRAY_USER'] %>
password : <%= ENV['BINTRAY_PASSWORD'] %>

# Required: packages to be deployed
packages:
- repo : "generic"
name : "release-manager"
user_org : "jbeemster"
publish : true

# Will attempt to overwrite a published entity if one is found
override : false

# If the artifact already exists will determine whether or not
# to fail the release
continue_on_conflict : false

# The version of this package
version : <%= CMD['cat VERSION'] %>

# Required IF '--check-version' is passed: will assert that
# both versions are the same
build_version : <%= ENV['TRAVIS_TAG'] %>

# Optional: Build commands
# You can nest your artifact creation commands here!
build_commands:
- ls -ls

# Required: Artifact
artifacts:
# The artifact name is composed like so:
# {{prefix}}{{version}}{{suffix}}.zip
- prefix : "release_manager_"
suffix : ""
type : "zip"

# The binaries to put in the zip
binary_paths:
- setup.py

Copyright and license
---------------------

The Release Manager is copyright 2016 Snowplow Analytics Ltd.

Licensed under the `Apache License, Version
2.0 <http://www.apache.org/licenses/LICENSE-2.0>`__ (the "License"); you
may not use this software except in compliance with the License.

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

.. |Release| image:: https://badge.fury.io/py/release-manager.svg
:target: https://badge.fury.io/py/release-manager
.. |License| image:: http://img.shields.io/badge/license-Apache--2-blue.svg?style=flat
:target: http://www.apache.org/licenses/LICENSE-2.0
.. |Travis| image:: https://travis-ci.org/snowplow/release-manager.svg?branch=master
:target: https://travis-ci.org/snowplow/release-manager

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

release-manager-0.1.0rc4.tar.gz (12.5 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page