https://github.com/marcuwynu23/pydaffodil
pydaffodil is a reusable deployment framework for Python, designed to simplify the process of deploying applications to remote VPS servers.
https://github.com/marcuwynu23/pydaffodil
Last synced: 5 months ago
JSON representation
pydaffodil is a reusable deployment framework for Python, designed to simplify the process of deploying applications to remote VPS servers.
- Host: GitHub
- URL: https://github.com/marcuwynu23/pydaffodil
- Owner: marcuwynu23
- Created: 2024-08-29T08:33:25.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-26T13:06:08.000Z (9 months ago)
- Last Synced: 2025-02-17T04:41:33.918Z (8 months ago)
- Language: Python
- Homepage:
- Size: 51.8 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
PyDaffodil
![]()
![]()
![]()
![]()
`pydaffodil` is a reusable deployment framework for Python, designed to simplify the process of deploying applications to remote VPS servers.
## Features
- Run shell commands
- Transfer files using SCP
- Execute SSH commands
- Modular and reusable deployment steps## Installation
To install `pydaffodil`, follow these steps:
1. **Install Python**: Make sure you have Python 3.6+ installed. You can download it from [python.org](https://www.python.org/downloads/).
2. **Install PyDaffodil**:You can install `pydaffodil` from PyPI using `pip`:
```bash
pip install pydaffodil
```3. **Verify Installation**:
After installation, you can verify it by importing `pydaffodil` in your Python script or in the Python interpreter:
```python
from pydaffodil import Daffodil
```If no errors are raised, the installation was successful.
## Usage
Here's an example of how to use `pydaffodil` for deployment:
```python
from pydaffodil import Daffodilcli = Daffodil(remote_user="root", remote_host="123.221.11.243", remote_path="/root/prod/bccs")
steps = [
{"step": "Build the project", "command": lambda: cli.run_command("npm run build")},
{"step": "Stop backend process on remote server", "command": lambda: cli.ssh_command("sudo forever stop 1")},
{"step": "Transfer files to remote server", "command": lambda: cli.transfer_files("build")},
{"step": "Restart backend process on remote server", "command": lambda: cli.ssh_command("sudo forever restartall")}
]cli.deploy(steps)
```Note: require admin privileges to run the script.
## How to Republish to PyPI
To republish this project to PyPI after making changes, follow these steps:
### 1. **Update the Version Number**
In order to upload a new version to PyPI, you must increment the version number in the `setup.py` file. For example, if the current version is `1.0.0`, change it to `1.0.1`:
```python
# setup.py
setup(
name="pydaffodil",
version="1.0.1", # Increment the version number here
# Other metadata...
)
```### 2. **Build the Package**
Run the following command to build both the source distribution (`.tar.gz`) and the wheel (`.whl`) files:
```bash
python -m build
```This will generate the package files in the `dist/` folder.
### 3. **Upload the Package to PyPI**
Once your package is built, you can use `twine` to upload it to PyPI. Run the following command to upload the new version:
```bash
twine upload dist/*
```You'll be prompted to enter your PyPI credentials. Make sure to have them ready.
### 4. **Test Your New Release**
After uploading, you can verify that the new version has been successfully published by installing it using `pip`:
```bash
pip install --upgrade pydaffodil
```This will install the latest version of the package.
### 5. **Re-uploading to TestPyPI (Optional)**
If you'd like to test the release before publishing it to the official PyPI, you can upload to TestPyPI instead:
```bash
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
```Then install it from TestPyPI to verify:
```bash
pip install --index-url https://test.pypi.org/simple/ pydaffodil
```This ensures that everything is working correctly before pushing the package to the main PyPI repository.