{ "info": { "author": "Piotr \u015aliwka", "author_email": "contact@psliwka.info", "bugtrack_url": null, "classifiers": [], "description": "tarball-deploy - atomically deploy your code from tarballs\n==========================================================\n[![Build status](https://travis-ci.org/psliwka/tarball-deploy.svg?branch=master)](https://travis-ci.org/psliwka/tarball-deploy)\n[![PyPI page](https://img.shields.io/pypi/v/tarball-deploy.svg)](https://pypi.python.org/pypi/tarball-deploy/)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n\n`tarball-deploy` is an utility to facilitate deploying code (or any files, for\nthat matter) packed into TAR archives. It handles unpacking received archives,\nand switching to new releases atomically (using a little bit of symlink magic).\n\nUse cases\n---------\n\n`tarball-deploy` has been written with shared web hosting services in mind,\nwhich usually grant you SSH access to a shared server, and one or more\n`public_html` directories, where you're expected to put your website files (eg.\nstatic HTML, or PHP scripts). This tool attempts to address the following\nproblems:\n* How to copy new release of your website from your CI/CD pipeline (you have\n one, right?) to your server.\n* How to switch to the new release atomically, so that the site is in\n consistent state all the time.\n* How to call securely additional hooks before and after deployment (f.ex.\n restarting your web server), in a way which does not allow your CI runner to\n execute arbitrary commands on the server.\n\nRequirements\n------------\n\n* A decent UNIX-like system, which will let you install custom Python scripts\n* A `tar` implementation. GNU Tar and libarchive (FreeBSD) tar are known to\n work.\n\nInstallation\n------------\n\nRemember that `tarball-deploy` is expected to be installed on your server. The\neasiest way is to install it with `pip`:\n```sh\n$ pip install tarball-deploy\n```\n\nYou might, however, want or need to install it in a virtualenv and symlink\nsomewhere in your `$PATH`.\n\nUsage\n-----\n\nTo use `tarball-deploy`, you need to pack your code into a TAR archive first.\nThis is out of scope of this project, but usually you can do something like:\n```sh\n$ tar cf release.tar index.html style.css images/**\n```\n\nThen you can proceed with your preferred deployment method from below.\n\n### Deploy from local machine\n```sh\n$ ssh your-username@your-host tarball-deploy --workdir=/your/remote/deployment/dir < release.tar\n```\nShould things go wrong, you can quickly revert to the previous deployment:\n```sh\n$ ssh your-username@your-host tarball-deploy --workdir=/your/remote/deployment/dir --rollback\n```\n\n### Deploy from CI\nFor every website you want to manage, you will need to:\n* Generate an SSH keypair for your CI runner\n* Edit `.ssh/authorized_keys` on your server and add something similar to:\n ```\n restrict,command=\"tarball-deploy --workdir=/your/remote/deployment/dir\" ssh-rsa AAAAB3Nza...\n ```\n* Symlink `/your/remote/deployment/dir/current` to a place where your web\n server is expected to find your site content (usually something like\n `~/domains/example.com/public_html`)\n\n### Calling additional hooks\nPut your `pre-deploy` and `post-deploy` scripts inside\n`/your/remote/deployment/dir/hooks`. They need to be marked as executable.\n\nCredits\n-------\n\nCreated by [Piotr \u015aliwka](https://github.com/psliwka)\n\nLicense\n-------\n\nMIT", "description_content_type": "text/markdown; charset=UTF-8", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/psliwka/tarball-deploy", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "tarball-deploy", "package_url": "https://pypi.org/project/tarball-deploy/", "platform": "", "project_url": "https://pypi.org/project/tarball-deploy/", "project_urls": { "Homepage": "https://github.com/psliwka/tarball-deploy" }, "release_url": "https://pypi.org/project/tarball-deploy/0.1.0/", "requires_dist": null, "requires_python": ">=3.6", "summary": "atomically deploy your code from tarballs", "version": "0.1.0" }, "last_serial": 5254327, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "e0a053c90ce162d22b2bf287742ab499", "sha256": "67c0ef24d3862539571397f1ee3d99cc75e0f9208af2765d649e3dc71e84c39e" }, "downloads": -1, "filename": "tarball-deploy-0.0.0.tar.gz", "has_sig": false, "md5_digest": "e0a053c90ce162d22b2bf287742ab499", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 1863, "upload_time": "2019-02-01T20:32:03", "url": "https://files.pythonhosted.org/packages/21/d9/a20b6ca3c6e86fd7e103768855cb97ac9d562ba491a4b110f9601addc05a/tarball-deploy-0.0.0.tar.gz" } ], "0.0.1": [ { "comment_text": "", "digests": { "md5": "82b258d1bacefe2ed342f22a9044e405", "sha256": "242201d0dbff431f8b9781c68d043e8e63208b2cd081913dca984567f0786dfe" }, "downloads": -1, "filename": "tarball-deploy-0.0.1.tar.gz", "has_sig": false, "md5_digest": "82b258d1bacefe2ed342f22a9044e405", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 1914, "upload_time": "2019-02-01T20:37:49", "url": "https://files.pythonhosted.org/packages/5f/87/ca792587e560206b613bcc03c7ea5e28428307387847901e48fc8fa39951/tarball-deploy-0.0.1.tar.gz" } ], "0.0.1.dev1": [ { "comment_text": "", "digests": { "md5": "03913afca297b8e90a8a100e6ec40bbf", "sha256": "50b9dce72ad1bee93d052ca7848ea374fff2e399b54636671a125bd716bd19ee" }, "downloads": -1, "filename": "tarball-deploy-0.0.1.dev1.tar.gz", "has_sig": false, "md5_digest": "03913afca297b8e90a8a100e6ec40bbf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 1909, "upload_time": "2019-02-01T20:33:57", "url": "https://files.pythonhosted.org/packages/0e/f1/8895fcdf66eea96fa5ffda0a576bd28922c67b3cd0a18f3af8813f46a20b/tarball-deploy-0.0.1.dev1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "03c98cd9739b60f29626f216cc493a37", "sha256": "64bac6b35cfe2ddd12058b022d33169fc3551bda280a55311fb24af4e79d18cd" }, "downloads": -1, "filename": "tarball-deploy-0.0.2.tar.gz", "has_sig": false, "md5_digest": "03c98cd9739b60f29626f216cc493a37", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 1945, "upload_time": "2019-02-02T10:56:51", "url": "https://files.pythonhosted.org/packages/34/86/9c6d626104c9f0eefec507c45c7faf76591885213a5f6280f0891b599ca1/tarball-deploy-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "b7792d3b7d02b9208e3079f85ded9739", "sha256": "7e8224e1677b6e16356ec6b632c728d0c38fa931c657cba96c69f8209fb01f7e" }, "downloads": -1, "filename": "tarball-deploy-0.0.3.tar.gz", "has_sig": false, "md5_digest": "b7792d3b7d02b9208e3079f85ded9739", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 2010, "upload_time": "2019-02-02T12:10:24", "url": "https://files.pythonhosted.org/packages/de/a1/79e650bb59a703dc885a9c667755606309a04112b50577dbaac368f7f475/tarball-deploy-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "515005a4d8a808f8c585c645c3d14dca", "sha256": "3ba9fe17a4ac6f75c37674d46099a38cd633c9f7c8fda2f27cfda288d9adaa0c" }, "downloads": -1, "filename": "tarball-deploy-0.0.4.tar.gz", "has_sig": false, "md5_digest": "515005a4d8a808f8c585c645c3d14dca", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 2691, "upload_time": "2019-02-02T21:26:13", "url": "https://files.pythonhosted.org/packages/38/bb/2aa6076c7683bac9998e0117cb99229b7ecede86c2d10edc913223f0d876/tarball-deploy-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "74dfbffefbae3de0b16e3d32fb0066ff", "sha256": "36d5d5c9c1aeeb2f33fb103221089e3389876a280106df5b7a0cc67eb8d0705c" }, "downloads": -1, "filename": "tarball-deploy-0.0.5.tar.gz", "has_sig": false, "md5_digest": "74dfbffefbae3de0b16e3d32fb0066ff", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 2804, "upload_time": "2019-02-10T16:05:07", "url": "https://files.pythonhosted.org/packages/e0/42/a4e31f4f845ad0d9f072e5dba644b2d9381fa4eac2c864772ad16dc99163/tarball-deploy-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "dab2a731fb0094b0e1184d050370600d", "sha256": "b905ee5f9f894929f62d3847d46de4a427d93c42d58644f0ad7e87fa5b814691" }, "downloads": -1, "filename": "tarball-deploy-0.0.6.tar.gz", "has_sig": false, "md5_digest": "dab2a731fb0094b0e1184d050370600d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5174, "upload_time": "2019-03-30T10:23:20", "url": "https://files.pythonhosted.org/packages/49/69/6302e92a0c0d68cc03643e6992fcd43dd94a33f06af3932b2f93366adfd9/tarball-deploy-0.0.6.tar.gz" } ], "0.0.6.dev6": [ { "comment_text": "", "digests": { "md5": "463fb28b74f2cee5ea7fa8f1d8332fd8", "sha256": "8767c36a71a98e421fd6b463a76b4d8033039cc44127a88d93b111e1146d96f9" }, "downloads": -1, "filename": "tarball-deploy-0.0.6.dev6.tar.gz", "has_sig": false, "md5_digest": "463fb28b74f2cee5ea7fa8f1d8332fd8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 4806, "upload_time": "2019-02-10T17:57:18", "url": "https://files.pythonhosted.org/packages/93/d0/cd272784cfe1baae4c588aad3df78fb22ee50853899bf7e977322be509d1/tarball-deploy-0.0.6.dev6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "05bc50d836d52573a80b349116c3a2fd", "sha256": "576da79cafeeb1e52d7e555b7edff36b7cffd66b3932780957ada58deee9c2ea" }, "downloads": -1, "filename": "tarball-deploy-0.0.7.tar.gz", "has_sig": false, "md5_digest": "05bc50d836d52573a80b349116c3a2fd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5677, "upload_time": "2019-05-10T19:46:00", "url": "https://files.pythonhosted.org/packages/23/5f/100d32379ecf1d1399a686a5a2217d3bad33e9055195f0e17bbfe1b78b59/tarball-deploy-0.0.7.tar.gz" } ], "0.0.7.dev3": [ { "comment_text": "", "digests": { "md5": "d6d211b43944edaf8ab102eca26a267a", "sha256": "10181a078437db62cfa507e68109e429d17dd4d84435c624cf178b1c82474566" }, "downloads": -1, "filename": "tarball-deploy-0.0.7.dev3.tar.gz", "has_sig": false, "md5_digest": "d6d211b43944edaf8ab102eca26a267a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5298, "upload_time": "2019-05-10T17:30:52", "url": "https://files.pythonhosted.org/packages/5a/9f/ecb4ef20b6b6a826ab8b335c004e1c148ed6ec7a2d2dc36c1e56ebfa62fd/tarball-deploy-0.0.7.dev3.tar.gz" } ], "0.0.7.dev4": [ { "comment_text": "", "digests": { "md5": "53a71df22e606be06f60d2933de3b30f", "sha256": "723589edb1975d7bb126ae816870ba0b7b10e0617c1c8cc958f6cc5a025e9530" }, "downloads": -1, "filename": "tarball-deploy-0.0.7.dev4.tar.gz", "has_sig": false, "md5_digest": "53a71df22e606be06f60d2933de3b30f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5360, "upload_time": "2019-05-10T17:38:20", "url": "https://files.pythonhosted.org/packages/82/e2/6f8f2c4582468a04826271eaed0e05b61828049655464b78bf23c7eaf56b/tarball-deploy-0.0.7.dev4.tar.gz" } ], "0.0.7.dev6": [ { "comment_text": "", "digests": { "md5": "70e7640357c594807123e52cc8a3d5d8", "sha256": "072968596e087fcfa5cab02a1fe1f1bff383c1316a26989b3ad66f1f4e12c262" }, "downloads": -1, "filename": "tarball-deploy-0.0.7.dev6.tar.gz", "has_sig": false, "md5_digest": "70e7640357c594807123e52cc8a3d5d8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5666, "upload_time": "2019-05-10T19:10:21", "url": "https://files.pythonhosted.org/packages/3a/fa/ac0e0d7dffd3f3a2ec541bc3ee4aaad16e93867861f13155e1be72d67ac9/tarball-deploy-0.0.7.dev6.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "c11a4e482bbc62f824289b0770f3bc3a", "sha256": "9d346d79123d6f028a566b1b69ad38a29cf9fb15cc96b29d1baa0f98b2a42ce6" }, "downloads": -1, "filename": "tarball-deploy-0.1.0.tar.gz", "has_sig": false, "md5_digest": "c11a4e482bbc62f824289b0770f3bc3a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6121, "upload_time": "2019-05-10T22:11:30", "url": "https://files.pythonhosted.org/packages/2d/a3/a070190b6d510cb67c325344010ea5a147051f1eaeab2af578fbc9ccad20/tarball-deploy-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c11a4e482bbc62f824289b0770f3bc3a", "sha256": "9d346d79123d6f028a566b1b69ad38a29cf9fb15cc96b29d1baa0f98b2a42ce6" }, "downloads": -1, "filename": "tarball-deploy-0.1.0.tar.gz", "has_sig": false, "md5_digest": "c11a4e482bbc62f824289b0770f3bc3a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6121, "upload_time": "2019-05-10T22:11:30", "url": "https://files.pythonhosted.org/packages/2d/a3/a070190b6d510cb67c325344010ea5a147051f1eaeab2af578fbc9ccad20/tarball-deploy-0.1.0.tar.gz" } ] }