[![Build Status](https://cloud.drone.io/api/badges/cknoll/deploymentutils/status.svg)](https://cloud.drone.io/cknoll/deploymentutils)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![PyPI version](https://badge.fury.io/py/deploymentutils.svg)](https://badge.fury.io/py/deploymentutils)
# deploymentutils
This repo contains a small python package to facilitate deployment of some personal projects.
## Overview
This package provides a thin layer on top of [fabric](https://www.fabfile.org/) to execute commands with a state like
- current working directory
- activated virtual environment (not yet implemented)
It also tries to simplify to deploy/maintain multiple instances of the same software but with varying fixtures, including one or more local instances for testing.
## Motivation
The package is mainly intended to facilitate deployment tasks (e.g. for django apps) by running a simple python script.
Compared to configuration management tools like *Ansible* this approach is far less powerful and scalable.
However, it might be easier to understand for developers and thus lowering the hurdle to deploy applications by them selves.
## Assumed Directory Layout
The scripts marked with [*] make use of this module.
<general project dir>
│
│
├── project-src-repo/ ← official project repo
│ ├── .git/
│ ├── deployment/
│ │ ├── some_files/
│ │ ├── deploy.py [*] ← original deployment script (delivered by the project)
│ │ └── ...
│ ├── django_project/
│ │ ├── settings.py
│ │ └── ...
│ ├── django_app/
│ │ ├── views.py
│ │ └── ...
│ ├── manage.py
│ └── ...
│
├── instance-specific/
│ ├── README.md
│ ├── demo
│ │ ├── .git/
│ │ ├── deploy.py
│ │ ├── project_data
│ │ └── ...
│ ├── production
│ │ ├── .git/
│ │ ├── deploy.py [*]
│ │ ├── project_data
│ │ └── ...
│ ├── testing
│ │ ├── .git/
│ │ ├── deploy.py [*]
│ │ ├── project_data
│ │ └── ...
│ └── ...
│
├── local_testing/ ← contents of this directory are autogenerated
│ ├── deploy.py [*]
│ ├── <appname>_deployment
│ └── ...
.
## Status
Still under development and not comprehensively tested.
## Features
- Create `config-example.ini` from an existing `config-production.ini` (which contains additional example values).
- `python -c "import deploymentutils as du; print(du.remove_secrets_from_config('config-production.ini'))"`
- See `test/test_config.ini` and unittests for details.
## Known Issues
- If a command started by `c.run("some_command")` is reading input, then the calling python process waits 'forever', i.e. until interrupted manually.
- possible solution fragment: https://stackoverflow.com/questions/35751295/python-subprocess-check-to-see-if-the-executed-script-is-asking-for-user-input
Raw data
{
"_id": null,
"home_page": "",
"name": "deploymentutils",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "ssh,remote execution",
"author": "Carsten Knoll",
"author_email": "carsten.knoll@posteo.de",
"download_url": "https://files.pythonhosted.org/packages/4d/4c/2793940624cd70929e53ea141071268d3ac1b74b928cb541b8ad15340fff/deploymentutils-0.8.0.tar.gz",
"platform": null,
"description": "[![Build Status](https://cloud.drone.io/api/badges/cknoll/deploymentutils/status.svg)](https://cloud.drone.io/cknoll/deploymentutils)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![PyPI version](https://badge.fury.io/py/deploymentutils.svg)](https://badge.fury.io/py/deploymentutils)\n\n\n# deploymentutils\n\nThis repo contains a small python package to facilitate deployment of some personal projects.\n\n\n## Overview\n\nThis package provides a thin layer on top of [fabric](https://www.fabfile.org/) to execute commands with a state like\n- current working directory\n- activated virtual environment (not yet implemented)\n\nIt also tries to simplify to deploy/maintain multiple instances of the same software but with varying fixtures, including one or more local instances for testing.\n\n## Motivation\n\nThe package is mainly intended to facilitate deployment tasks (e.g. for django apps) by running a simple python script.\nCompared to configuration management tools like *Ansible* this approach is far less powerful and scalable.\nHowever, it might be easier to understand for developers and thus lowering the hurdle to deploy applications by them selves.\n\n## Assumed Directory Layout\n\nThe scripts marked with [*] make use of this module.\n\n <general project dir>\n \u2502\n \u2502\n \u251c\u2500\u2500 project-src-repo/ \u2190 official project repo\n \u2502 \u251c\u2500\u2500 .git/\n \u2502 \u251c\u2500\u2500 deployment/\n \u2502 \u2502 \u251c\u2500\u2500 some_files/\n \u2502 \u2502 \u251c\u2500\u2500 deploy.py [*] \u2190 original deployment script (delivered by the project)\n \u2502 \u2502 \u2514\u2500\u2500 ...\n \u2502 \u251c\u2500\u2500 django_project/\n \u2502 \u2502 \u251c\u2500\u2500 settings.py\n \u2502 \u2502 \u2514\u2500\u2500 ...\n \u2502 \u251c\u2500\u2500 django_app/\n \u2502 \u2502 \u251c\u2500\u2500 views.py\n \u2502 \u2502 \u2514\u2500\u2500 ...\n \u2502 \u251c\u2500\u2500 manage.py\n \u2502 \u2514\u2500\u2500 ...\n \u2502\n \u251c\u2500\u2500 instance-specific/\n \u2502 \u251c\u2500\u2500 README.md\n \u2502 \u251c\u2500\u2500 demo\n \u2502 \u2502 \u251c\u2500\u2500 .git/\n \u2502 \u2502 \u251c\u2500\u2500 deploy.py\n \u2502 \u2502 \u251c\u2500\u2500 project_data\n \u2502 \u2502 \u2514\u2500\u2500 ...\n \u2502 \u251c\u2500\u2500 production\n \u2502 \u2502 \u251c\u2500\u2500 .git/\n \u2502 \u2502 \u251c\u2500\u2500 deploy.py [*]\n \u2502 \u2502 \u251c\u2500\u2500 project_data\n \u2502 \u2502 \u2514\u2500\u2500 ...\n \u2502 \u251c\u2500\u2500 testing\n \u2502 \u2502 \u251c\u2500\u2500 .git/\n \u2502 \u2502 \u251c\u2500\u2500 deploy.py [*]\n \u2502 \u2502 \u251c\u2500\u2500 project_data\n \u2502 \u2502 \u2514\u2500\u2500 ...\n \u2502 \u2514\u2500\u2500 ...\n \u2502\n \u251c\u2500\u2500 local_testing/ \u2190 contents of this directory are autogenerated\n \u2502 \u251c\u2500\u2500 deploy.py [*]\n \u2502 \u251c\u2500\u2500 <appname>_deployment\n \u2502 \u2514\u2500\u2500 ...\n .\n\n\n\n## Status\n\nStill under development and not comprehensively tested.\n\n\n## Features\n\n\n- Create `config-example.ini` from an existing `config-production.ini` (which contains additional example values).\n - `python -c \"import deploymentutils as du; print(du.remove_secrets_from_config('config-production.ini'))\"`\n - See `test/test_config.ini` and unittests for details.\n\n\n\n\n## Known Issues\n\n- If a command started by `c.run(\"some_command\")` is reading input, then the calling python process waits 'forever', i.e. until interrupted manually.\n - possible solution fragment: https://stackoverflow.com/questions/35751295/python-subprocess-check-to-see-if-the-executed-script-is-asking-for-user-input\n\n\n",
"bugtrack_url": null,
"license": "GNU General Public License v3",
"summary": "Small python package to facilitate deployment of some personal projects.",
"version": "0.8.0",
"project_urls": null,
"split_keywords": [
"ssh",
"remote execution"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "18423c476e8b6c399113788f86889f35c97ebf5dfc6f445d54e32a53807ce286",
"md5": "16ae40b7bfcadc66b9be3c8a7d42fb80",
"sha256": "ca78578770fad13a06473e4ead0957b32306aeb0303ae93bea2e4e5eedf364ce"
},
"downloads": -1,
"filename": "deploymentutils-0.8.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "16ae40b7bfcadc66b9be3c8a7d42fb80",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 26646,
"upload_time": "2023-05-18T16:41:01",
"upload_time_iso_8601": "2023-05-18T16:41:01.734948Z",
"url": "https://files.pythonhosted.org/packages/18/42/3c476e8b6c399113788f86889f35c97ebf5dfc6f445d54e32a53807ce286/deploymentutils-0.8.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4d4c2793940624cd70929e53ea141071268d3ac1b74b928cb541b8ad15340fff",
"md5": "8f94af0d8dbd9668116ebfdbff9cedee",
"sha256": "95eb48e4208c084e393d77d60d35074873963911c842c08d37bc80feb7563bcf"
},
"downloads": -1,
"filename": "deploymentutils-0.8.0.tar.gz",
"has_sig": false,
"md5_digest": "8f94af0d8dbd9668116ebfdbff9cedee",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 34873,
"upload_time": "2023-05-18T16:41:04",
"upload_time_iso_8601": "2023-05-18T16:41:04.305869Z",
"url": "https://files.pythonhosted.org/packages/4d/4c/2793940624cd70929e53ea141071268d3ac1b74b928cb541b8ad15340fff/deploymentutils-0.8.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-05-18 16:41:04",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "deploymentutils"
}