{"id":25411704,"url":"https://github.com/koho/ezd","last_synced_at":"2025-10-31T05:30:20.548Z","repository":{"id":62593067,"uuid":"544030758","full_name":"koho/ezd","owner":"koho","description":"Easy Deployment Tool","archived":false,"fork":false,"pushed_at":"2024-01-10T16:29:26.000Z","size":28,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-10T02:25:09.125Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/koho.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-10-01T13:06:29.000Z","updated_at":"2024-01-05T20:37:37.000Z","dependencies_parsed_at":"2022-11-03T23:08:11.296Z","dependency_job_id":null,"html_url":"https://github.com/koho/ezd","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koho%2Fezd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koho%2Fezd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koho%2Fezd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koho%2Fezd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/koho","download_url":"https://codeload.github.com/koho/ezd/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238161481,"owners_count":19426668,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-16T10:19:19.603Z","updated_at":"2025-10-31T05:30:20.202Z","avatar_url":"https://github.com/koho.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Easy Deployment\n\nEasy deployment tool for Python application. There are mainly two parts:\n\n- Create a virtual environment (Optional).\n- Install your application as a service.\n\nDeploy your application with one command!\n\n## Install\n\nIt's recommended that you install this package in the **Global Python Environment**.\n\n```\npip install ezd\n```\n\nOn Windows, be careful if you want to uninstall this package. Make sure all services created with this tool are removed.\n\n## Usage\n\n### Config file\n\nRun `ezd init` to create a config file named `deploy.json`.\n\n```json\n{\n  \"env\": {\n    \"name\": \"venv\"\n  },\n  \"service\": {\n    \"name\": \"\",\n    \"cmd\": [],\n    \"display\": \"\",\n    \"description\": \"\"\n  }\n}\n```\n\nA list of full parameters:\n\n| Parameter                 | Type         | Description                                                                                        | Windows            | Linux              |\n|---------------------------|--------------|----------------------------------------------------------------------------------------------------|--------------------|--------------------|\n| env.name                  | string       | The name of virtual environment.                                                                   | :heavy_check_mark: | :heavy_check_mark: |\n| env.lookup                | string       | Offline package lookup directory used by pip.                                                      | :heavy_check_mark: | :heavy_check_mark: |\n| env.local                 | string       | A directory contains local package file.                                                           | :heavy_check_mark: | :heavy_check_mark: |\n| env.requirement           | bool         | Whether to install dependencies in `requirements.txt`. Default is `true`.                          | :heavy_check_mark: | :heavy_check_mark: |\n| service.name              | string       | The name of service.                                                                               | :heavy_check_mark: | :heavy_check_mark: |\n| service.cmd               | list[string] | The command line to be executed.                                                                   | :heavy_check_mark: | :heavy_check_mark: |\n| service.display           | string       | Display name of service.                                                                           | :heavy_check_mark: | :x:                |\n| service.description       | string       | Description of service.                                                                            | :heavy_check_mark: | :heavy_check_mark: |\n| service.start             | string       | Start type of service (demand/auto/boot/disabled/system). Default is `auto`.                       | :heavy_check_mark: | :heavy_check_mark: |\n| service.restart           | int          | Restart delay (seconds) when service failed. Default is `30`.                                      | :heavy_check_mark: | :heavy_check_mark: |\n| service.restart_policy    | string       | Configures whether the service shall be restarted when the service exits. Default is `on-failure`. | :x:                | :heavy_check_mark: |\n| service.runtime_max_sec   | int          | Configures a maximum time for the service to run. Default is `0`.                                  | :x:                | :heavy_check_mark: |\n| service.working_directory | string       | Configures the working directory of the service. Default is `.`.                                   | :heavy_check_mark: | :heavy_check_mark: |\n| service.deps              | list[string] | Dependencies of service.                                                                           | :heavy_check_mark: | :heavy_check_mark: |\n| service.interactive       | bool         | Run service in interactive mode. Default is `false`.                                               | :heavy_check_mark: | :x:                |\n| service.user              | string       | Run service with given user.                                                                       | :heavy_check_mark: | :heavy_check_mark: |\n| service.password          | string       | Password of the user.                                                                              | :heavy_check_mark: | :x:                |\n| service.delayed           | bool         | Delayed start of service.                                                                          | :heavy_check_mark: | :x:                |\n\n### Commands\n\nRun `ezd -h` to see all commands.\n\n```\nusage: ezd [-h] command\n\nEasy Deployment Tool\n\npositional arguments:\n  command          Command \u003cinit|deploy|install|uninstall|start|stop\u003e\n\noptions:\n  -h, --help       show this help message and exit\n  --config CONFIG  config file\n```\n\nAvailable commands:\n\n| Command   | Description                                                   |\n|-----------|---------------------------------------------------------------|\n| init      | Create an example config file `deploy.json`.                  |\n| deploy    | Create virtual environment and install dependencies.          |\n| install   | Install a service (Automatically run `deploy` command first). |\n| uninstall | Remove service (Automatically run `stop` command first).      |\n| start     | Start service.                                                |\n| stop      | Stop service.                                                 |\n\n### Update config\n\n#### Upgrade or install packages\n\nIf you need to upgrade or install packages, just edit the `requirements.txt` file and follow the steps below:\n\n1. Stop the service\n\n    ```shell\n    ezd stop\n    ```\n\n2. Deploy new packages\n\n    ```shell\n    ezd deploy\n    ```\n\n3. Start the service\n\n    ```shell\n    ezd start\n    ```\n\n#### Update service\n\nIf you update the service settings of the config file, you must `uninstall` the old service first.\n\n1. Uninstall the service\n\n    ```shell\n    ezd uninstall\n    ```\n\n2. Install service\n\n    ```shell\n    ezd install\n    ```\n\n3. Start the service\n\n    ```shell\n    ezd start\n    ```\n\n## Examples\n\n### Jupyter notebook\n\nCreate a new `nb` directory and start working in it.\n\n```shell\ncd nb\necho notebook \u003e requirements.txt\nezd init\n```\n\nThe `deploy.json` file looks like this:\n\n```json\n{\n  \"env\": {\n    \"name\": \"venv\"\n  },\n  \"service\": {\n    \"name\": \"notebook\",\n    \"cmd\": [\n      \"jupyter-notebook.exe\"\n    ],\n    \"display\": \"Jupyter Notebook\",\n    \"description\": \"Jupyter Notebook Service\"\n  }\n}\n```\n\nWe are ready to deploy now.\n\n```shell\nezd install\nezd start\n```\n\nYou can now visit http://localhost:8888/ to confirm jupyter notebook is running.\n\n### Ping test\n\nCreate a new `pingtest` directory and start working in it.\n\n```shell\ncd pingtest\nezd init\n```\n\nFor non-python project, we can omit virtual environment since we don't need it. The `deploy.json` file looks like this:\n\n```json\n{\n  \"service\": {\n    \"name\": \"pingtest\",\n    \"cmd\": [\n      \"ping\",\n      \"-t\",\n      \"1.1.1.1\"\n    ],\n    \"display\": \"Ping it\",\n    \"description\": \"A ping test service\"\n  }\n}\n```\n\nDeploy now!\n\n```shell\nezd install\nezd start\n```\n\nLet's confirm ping is running:\n\n```shell\n$ tasklist | findstr PING\nPING.EXE                     19564 Services                   0      4,540 K\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoho%2Fezd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkoho%2Fezd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoho%2Fezd/lists"}