{ "info": { "author": "Marius B\u0103rbulescu", "author_email": "marius@freshcolors.ro", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4" ], "description": "Durant\n===============\n\nWhat is it\n------------------\n\nDurant is a simple deployment tool for git repositories. It sends the files to servers using rsync over ssh. Basically, this means that you can use durant to deploy any kind of application, no matter the language used.\n\n\nLatest version\n------------------\n\nDurant is a work in progress, currently in beta phase. Latest available version is 0.2.3.\n\n\nRequirements\n------------------\n\nLinux operating system and:\n\n* python (2.6, 2.7, 3.3, 3.4)\n* git\n* rsync\n\n\nInstallation\n------------------\n\nTo install first make sure you have pip installed. Then simply run:\n\n.. code-block:: bash\n\n $ pip install durant\n\nThis will install durant globally. If you want to install for your user only use the ``--user`` option and make sure that you have :code:`$HOME/.local/bin` added to your PATH:\n\n.. code-block:: bash\n\n $ pip install --user durant\n\n\nUsage\n------------------\n\nConfiguration file\n^^^^^^^^^^^^^^^^^^^^^\n\nFirst thing you need to set up is a configuration file. This is needed in order for the tool to know what and where to do the deployments. The configuration is named :code:`durant.conf` and you have to place it in the root directory where your projects resides.\n\nA sample config file is provided in this repository. You can define multiple stages to deploy to, each section of the config file representing a deployment stage. As you can see in the sample file, the structure follows the INI file format.\n\nThe first section of the file, called *DEFAULT*, holds general options such as the project's repository, files to exclude when deploying or the local path where to clone the project before performing the deploy.\n\n.. code-block:: ini\n\n [DEFAULT]\n repository: /repository/path/or/url\n temp_dir: /local/directory/where/to/clone/before/deploy\n exclude: .git, .gitignore, .gitmodules\n\nThe sections that follow can be as many as your deployment stages are. For instance, in the case of the production stage one configuration section could look like the following:\n\n.. code-block:: ini\n\n [production]\n server: example.com, 127.0.0.1\n user: username\n branch: master\n project_dir: /server/project/directory/root\n before_deploy: \n composer install --no-dev --no-interaction --optimize-autoloader\n nosetests\n phpunit\n etc.\n\nFor each stage you can define the corresponding server, the username used when communicating via ssh, what branch to use, the project's root directory on the server or some commands to execute before deployment. Please note that each of these commands must exit with return code 0 or else the deployment considers that something went wrong and halts the process, thus failing.\n\nSome of the options can take multiple values, like when declaring servers or before deploy commands. In such cases you can separate multiple values by using commas or by entering each value on a different line, properly indented.\n\nPlease note that the deploy process works best if you have already setup ssh authentication for your servers by defining hosts and authentication details using the :code:`~/.ssh/config` file. If you haven't, you can specify the identity key file to use when connecting to the server by using the *ssh_identity* option and also the *ssh_port* if you use a custom ssh port. \n\nCommand line tool\n^^^^^^^^^^^^^^^^^^^^^\n\nAfter everything is setup you can start using the command line tool. As you may have guessed, you can invoke it by using the name ``durant``, from inside your project's root directory:\n\n.. code-block:: bash\n\n $ durant deploy [OPTIONS] \n\nIf you want to test if the deploy process will perform well, without actually deploying to servers, you can specify the ``-n`` option in order to do a trial run.\n\n.. code-block:: bash\n\n $ durant deploy -n \n\nThis will give a view of the files that will be modified. I **highly advice to use this option first** to check if everything will go as expected and not have any surprises. \n\nExamples\n^^^^^^^^^^^^^^^^^^^^^\n\nA successfully completed deployment may look like this:\n\n.. image:: ./screens/success.gif\n\nIn case something turns out wrong, a corresponding error is raised and the process is stopped:\n\n.. image:: ./screens/fail.gif\n\n\nContribute\n------------------\n\nIf you find any bugs please feel free to open a related issue. You can also send directly a pull request with the bug fix if you want (please use the current stable branch in this case).\n\n\nRelease History\n------------------\n\nPlease see the file called `HISTORY.rst`_.\n\n.. _HISTORY.rst: ./HISTORY.rst\n\nLicensing\n------------------\n\nPlease see the file called `LICENSE`_.\n\n.. _LICENSE: ./LICENSE\n.. :changelog:\n\nRelease History\n------------------\n\n0.2.3 (2015-05-07)\n^^^^^^^^^^^^^^^^^^\n\n* Add the possibility to specify the remote to use (default is origin)\n* Internal changes:\n - Refactor code to use separated commands\n - Add console class to better handle console output\n - Add config class to handle config options\n\n0.2.2 (2015-04-19)\n^^^^^^^^^^^^^^^^^^\n\n* Switch to argparse module for command line interface\n\n0.2.1 (2015-04-14)\n^^^^^^^^^^^^^^^^^^\n\n**Bugfixes**\n\n* Fix rsync exclude command build error\n\n0.2.0 (2015-04-14)\n^^^^^^^^^^^^^^^^^^\n\n* Use common git files such as .gitignore, .gitmodules, .gitkeep and the .git \n directory as default exclude patterns when building the rsync command\n\n0.1.0 (2015-04-14)\n^^^^^^^^^^^^^^^^^^\n\n* Initial public release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/misterjinx/durant", "keywords": null, "license": "Apache 2.0", "maintainer": null, "maintainer_email": null, "name": "durant", "package_url": "https://pypi.org/project/durant/", "platform": "linux", "project_url": "https://pypi.org/project/durant/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/misterjinx/durant" }, "release_url": "https://pypi.org/project/durant/0.2.3/", "requires_dist": null, "requires_python": null, "summary": "Simple git deployment tool", "version": "0.2.3" }, "last_serial": 1537748, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "64cea5b2158bf9a472a7985633d5c0a2", "sha256": "106567fb566804778108309f9f298346cefc533f33a57c768eea7562e682a453" }, "downloads": -1, "filename": "durant-0.1.0.tar.gz", "has_sig": false, "md5_digest": "64cea5b2158bf9a472a7985633d5c0a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6989, "upload_time": "2015-04-14T09:41:55", "url": "https://files.pythonhosted.org/packages/6e/ab/59c5c23e6bac39edff4bd66959228b405a846780333c2d63a8a15cea3161/durant-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "42c4feaa2c901912523b0ba74aa823e4", "sha256": "c1a36aabe0c8616537370a9ba0eb6fe32f195a012b156138e09e4c54fe6ba5dc" }, "downloads": -1, "filename": "durant-0.2.0.tar.gz", "has_sig": false, "md5_digest": "42c4feaa2c901912523b0ba74aa823e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7696, "upload_time": "2015-04-14T16:12:48", "url": "https://files.pythonhosted.org/packages/00/6d/fbfc6a0b294e802baacb5e0a8403253cede4d2fcf6fd7e196363349325e7/durant-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "74fb8b95ad175edb7f4df723ef7696fa", "sha256": "eb68367362590c1fe9c2125f3ffe06829f89a71bd1d5cb2eac56c3088a83ad71" }, "downloads": -1, "filename": "durant-0.2.1.tar.gz", "has_sig": false, "md5_digest": "74fb8b95ad175edb7f4df723ef7696fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7731, "upload_time": "2015-04-14T16:42:55", "url": "https://files.pythonhosted.org/packages/7e/94/faf832810657ef29a1e8bb97c2ee9798506afb00ee04103d138f00e48bd8/durant-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "03cd8cc3740122632aa88f5caaa1a979", "sha256": "57838eb1381a1741116ab5161e07158ebea0186fa4650d2915708dca76986e56" }, "downloads": -1, "filename": "durant-0.2.2.tar.gz", "has_sig": false, "md5_digest": "03cd8cc3740122632aa88f5caaa1a979", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7944, "upload_time": "2015-04-19T11:38:22", "url": "https://files.pythonhosted.org/packages/56/ee/6fdbdfb5fdca0d1e15cf177945b666beb8e87de35f02d0c3f62936074557/durant-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "18effa85d87d5f111c0abbbfcaeb5bde", "sha256": "1c58da8f116ad66f3f41503c8a10883f4b2ab95adefb27c54f7e214516142fe9" }, "downloads": -1, "filename": "durant-0.2.3.tar.gz", "has_sig": false, "md5_digest": "18effa85d87d5f111c0abbbfcaeb5bde", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6756, "upload_time": "2015-05-07T19:07:09", "url": "https://files.pythonhosted.org/packages/8a/7b/62e3e529420cd26534fe23a471a9d2429c58410b49e34b18be1eeb7b80a8/durant-0.2.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "18effa85d87d5f111c0abbbfcaeb5bde", "sha256": "1c58da8f116ad66f3f41503c8a10883f4b2ab95adefb27c54f7e214516142fe9" }, "downloads": -1, "filename": "durant-0.2.3.tar.gz", "has_sig": false, "md5_digest": "18effa85d87d5f111c0abbbfcaeb5bde", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6756, "upload_time": "2015-05-07T19:07:09", "url": "https://files.pythonhosted.org/packages/8a/7b/62e3e529420cd26534fe23a471a9d2429c58410b49e34b18be1eeb7b80a8/durant-0.2.3.tar.gz" } ] }