Use AWS S3 as a release pipeline. Use code to enforce process and promote releases.
pip install --upgrade git+https://github.com/russellballestrini/s3p.git
or clone this repo and run,
git clone https://github.com/russellballestrini/s3p.git cd s3p pip install --upgrade .
To get started:
set the environment vars:
Bucket used for storing releases
Coma separated string of ordered ranks used for promotion
AWS_S3_RANKS="qa, staging, production"
s3p promote my.tar.gz staging error="could not promote, trying to skip rank?" s3p promote my.tar.gz qa success="promoted my.tar.gz version 141676372407 to qa rank" s3p promote my.tar.gz staging success="promoted my.tar.gz version 141676372407 to staging rank" s3p promote my.tar.gz production success="promoted my.tar.gz version 141676372407 to production rank"
- Promoting to the first rank will cause an upload or update.
- Promoting to subsequent ranks will copy from the previous rank.
Pass an optional release number, version, commit hash or identifier string:
s3p promote my.tar.gz qa 0.1.1 success="promoted my.tar.gz version 0.1.1 to qa rank" s3p promote my.tar.gz staging success="promoted my.tar.gz version 0.1.1 to staging rank"
Instead of blindly clobbering files, s3p promote always creates a copy of the file under the archive area in the pipeline using the version id.
There are a number of subcommands that interface with the pipeline.
s3p version --help
usage: s3p version filepath [rank] positional arguments: filepath filename or filepath rank position in pipeline optional arguments: --only-version only display version identifier to stdout
s3p promote --help
usage: s3p promote filepath rank [version] Promote releases through pipeline ranks. positional arguments: filepath filename or filepath rank position in pipeline version version identifier, timestamp, md5, commit hash, etc
s3p download --help
usage: s3p download filepath rank [download_path] Download release from rank to local filesystem. positional arguments: filepath filename or filepath rank position in pipeline download_path location to download file to
Build a release pipeline with code. Review S3Promote and S3Release classes:
Represents a release pipeline (object) in S3. Acts like boto.s3.bucket.Bucket through composition.
For more details:
from s3p import S3Pipeline help(S3Pipeline)
Represents a release (object) in an S3Pipeline. Acts like boto.s3.key.Key through composition.
For more details:
from s3p import S3Release help(S3Release)