mirror of
https://github.com/frappe/bench.git
synced 2025-01-04 22:55:25 +00:00
refactor: README
Signed-off-by: Akhil Narang <me@akhilnarang.dev>
This commit is contained in:
parent
6d2ce9691f
commit
9f76d3a398
210
README.md
210
README.md
@ -1,52 +1,29 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<picture>
|
|
||||||
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/frappe/design/raw/master/logos/png/bench-logo-dark.png">
|
![Logo](resources/logo.png)
|
||||||
<img src="https://github.com/frappe/design/raw/master/logos/png/bench-logo.png" height="128">
|
|
||||||
</picture>
|
## Bench
|
||||||
<h2>Bench</h2>
|
**CLI to manage Frappe applications**
|
||||||
|
|
||||||
|
|
||||||
|
[![Python version](https://img.shields.io/badge/python-%3E=_3.10-green.svg)](https://www.python.org/downloads/)
|
||||||
|
[![PyPI Version](https://badge.fury.io/py/frappe-bench.svg)](https://pypi.org/project/frappe-bench)
|
||||||
|
![Platform Compatibility](https://img.shields.io/badge/platform-linux%20%7C%20macos-blue)
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
Bench is a command-line utility that helps you to install, update, and manage multiple sites for Frappe/ERPNext applications on [*nix systems](https://en.wikipedia.org/wiki/Unix-like) for development and production.
|
## Bench
|
||||||
|
|
||||||
<div align="center">
|
Bench is a command-line utility that helps you to install, update, and manage multiple sites for Frappe applications on [*nix systems](https://en.wikipedia.org/wiki/Unix-like) for development and production.
|
||||||
<a target="_blank" href="https://www.python.org/downloads/" title="Python version">
|
|
||||||
<img src="https://img.shields.io/badge/python-%3E=_3.8-green.svg">
|
|
||||||
</a>
|
|
||||||
<a target="_blank" href="https://app.travis-ci.com/github/frappe/bench" title="CI Status">
|
|
||||||
<img src="https://app.travis-ci.com/frappe/bench.svg?branch=develop">
|
|
||||||
</a>
|
|
||||||
<a target="_blank" href="https://pypi.org/project/frappe-bench" title="PyPI Version">
|
|
||||||
<img src="https://badge.fury.io/py/frappe-bench.svg" alt="PyPI version">
|
|
||||||
</a>
|
|
||||||
<a target="_blank" title="Platform Compatibility">
|
|
||||||
<img src="https://img.shields.io/badge/platform-linux%20%7C%20osx-blue">
|
|
||||||
</a>
|
|
||||||
<a target="_blank" href="https://app.fossa.com/projects/git%2Bgithub.com%2Ffrappe%2Fbench?ref=badge_shield" title="FOSSA Status">
|
|
||||||
<img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2Ffrappe%2Fbench.svg?type=shield">
|
|
||||||
</a>
|
|
||||||
<a target="_blank" href="#LICENSE" title="License: GPLv3">
|
|
||||||
<img src="https://img.shields.io/badge/License-GPLv3-blue.svg">
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
## Table of Contents
|
## Key features
|
||||||
|
|
||||||
- [Table of Contents](#table-of-contents)
|
|
||||||
- [Installation](#installation)
|
|
||||||
- [Containerized Installation](#containerized-installation)
|
|
||||||
- [Easy Install Script](#easy-install-script)
|
|
||||||
- [Setup](#setup)
|
|
||||||
- [Arguments](#arguments)
|
|
||||||
- [Troubleshooting](#troubleshooting)
|
|
||||||
- [Manual Installation](#manual-installation)
|
|
||||||
- [Basic Usage](#basic-usage)
|
|
||||||
- [Custom Bench Commands](#custom-bench-commands)
|
|
||||||
- [Guides](#guides)
|
|
||||||
- [Resources](#resources)
|
|
||||||
- [Development](#development)
|
|
||||||
- [Releases](#releases)
|
|
||||||
- [License](#license)
|
|
||||||
|
|
||||||
|
Bench helps you set up and manage your frappe sites with ease. Here are some of the key features:
|
||||||
|
- Initializing a new bench to work on sites and apps
|
||||||
|
- Creating a new frappe site
|
||||||
|
- Creating and installing apps that can be used on the sites
|
||||||
|
- Managing frappe sites
|
||||||
|
- Managing site backups
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@ -55,39 +32,46 @@ A typical bench setup provides two types of environments — Development and
|
|||||||
The setup for each of these installations can be achieved in multiple ways:
|
The setup for each of these installations can be achieved in multiple ways:
|
||||||
|
|
||||||
- [Containerized Installation](#containerized-installation)
|
- [Containerized Installation](#containerized-installation)
|
||||||
- [Manual Installation](#manual-installation)
|
- [Manual Installation](https://docs.frappe.io/framework/user/en/tutorial/install-and-setup-bench)
|
||||||
|
|
||||||
We recommend using Docker Installation to setup a Production Environment. For Development, you may choose either of the two methods to setup an instance.
|
We recommend using Docker Installation to setup a Production Environment. For Development, you may choose either of the two methods to setup an instance.
|
||||||
|
|
||||||
Otherwise, if you are looking to evaluate Frappe apps without hassle of hosting, you can try them [on frappecloud.com](https://frappecloud.com/).
|
Otherwise, if you are looking to evaluate Frappe apps without the hassle of managing hosting yourself, you can try them on [Frappe Cloud](https://frappecloud.com/).
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<a href="https://frappecloud.com/dashboard/signup" target="_blank">
|
||||||
|
<picture>
|
||||||
|
<source media="(prefers-color-scheme: dark)" srcset="https://frappe.io/files/try-on-fc-white.png">
|
||||||
|
<img src="https://frappe.io/files/try-on-fc-black.png" alt="Try on Frappe Cloud" height="28" />
|
||||||
|
</picture>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
### Containerized Installation
|
### Containerized Installation
|
||||||
|
|
||||||
A Frappe/ERPNext instance can be setup and replicated easily using [Docker](https://docker.com). The officially supported Docker installation can be used to setup either of both Development and Production environments.
|
A Frappe instance can be setup and replicated easily using [Docker](https://docker.com). The officially supported Docker installation can be used to setup either of both Development and Production environments.
|
||||||
|
|
||||||
To setup either of the environments, you will need to clone the official docker repository:
|
To setup either of the environments, you will need to clone the official docker repository:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ git clone https://github.com/frappe/frappe_docker.git
|
git clone https://github.com/frappe/frappe_docker.git
|
||||||
$ cd frappe_docker
|
|
||||||
```
|
```
|
||||||
|
|
||||||
A quick setup guide for both the environments can be found below. For more details, check out the [Frappe/ERPNext Docker Repository](https://github.com/frappe/frappe_docker).
|
A quick setup guide for both the environments can be found below. For more details, check out the [Frappe Docker Repository](https://github.com/frappe/frappe_docker).
|
||||||
|
|
||||||
### Easy Install Script
|
### Easy Install Script
|
||||||
|
|
||||||
The Easy Install script should get you going with a Frappe/ERPNext setup with minimal manual intervention and effort.
|
The Easy Install script should get you going with a Frappe setup with minimal manual intervention and effort.
|
||||||
|
|
||||||
This script uses Docker with the [Frappe/ERPNext Docker Repository](https://github.com/frappe/frappe_docker) and can be used for both Development setup and Production setup.
|
This script uses Docker with the [Frappe Docker Repository](https://github.com/frappe/frappe_docker) and can be used for both Development setup and Production setup.
|
||||||
|
|
||||||
#### Setup
|
#### Setup
|
||||||
|
|
||||||
Download the Easy Install script and execute it:
|
Download the Easy Install script and execute it:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ wget https://raw.githubusercontent.com/frappe/bench/develop/easy-install.py
|
wget https://raw.githubusercontent.com/frappe/bench/develop/easy-install.py
|
||||||
$ python3 easy-install.py deploy --email=user@domain.tld --sitename=subdomain.domain.tld --app=erpnext
|
python3 easy-install.py deploy --email=user@domain.tld --sitename=subdomain.domain.tld --app=erpnext
|
||||||
```
|
```
|
||||||
|
|
||||||
This script will install docker on your system and will fetch the required containers, setup bench and a default ERPNext instance.
|
This script will install docker on your system and will fetch the required containers, setup bench and a default ERPNext instance.
|
||||||
@ -101,7 +85,8 @@ When the setup is complete, you will be able to access the system at `http://<yo
|
|||||||
|
|
||||||
Here are the arguments for the easy-install script
|
Here are the arguments for the easy-install script
|
||||||
|
|
||||||
**Build custom images**
|
<details>
|
||||||
|
<summary><b>Build custom images</b></summary>
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
usage: easy-install.py build [-h] [-n PROJECT] [-i IMAGE] [-q] [-m HTTP_PORT] [-v VERSION] [-a APPS] [-s SITES] [-e EMAIL]
|
usage: easy-install.py build [-h] [-n PROJECT] [-i IMAGE] [-q] [-m HTTP_PORT] [-v VERSION] [-a APPS] [-s SITES] [-e EMAIL]
|
||||||
@ -141,8 +126,10 @@ options:
|
|||||||
-x, --deploy Deploy after build
|
-x, --deploy Deploy after build
|
||||||
-u, --upgrade Upgrade after build
|
-u, --upgrade Upgrade after build
|
||||||
```
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
**Deploy using compose**
|
<details>
|
||||||
|
<summary><b>Deploy using compose</b></summary>
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
usage: easy-install.py deploy [-h] [-n PROJECT] [-i IMAGE] [-q] [-m HTTP_PORT] [-v VERSION] [-a APPS] [-s SITES] [-e EMAIL]
|
usage: easy-install.py deploy [-h] [-n PROJECT] [-i IMAGE] [-q] [-m HTTP_PORT] [-v VERSION] [-a APPS] [-s SITES] [-e EMAIL]
|
||||||
@ -164,8 +151,10 @@ options:
|
|||||||
-e EMAIL, --email EMAIL
|
-e EMAIL, --email EMAIL
|
||||||
Add email for the SSL.
|
Add email for the SSL.
|
||||||
```
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
**Upgrade existing project**
|
<details>
|
||||||
|
<summary><b>Upgrade existing project</b></summary>
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
usage: easy-install.py upgrade [-h] [-n PROJECT] [-i IMAGE] [-q] [-m HTTP_PORT] [-v VERSION]
|
usage: easy-install.py upgrade [-h] [-n PROJECT] [-i IMAGE] [-q] [-m HTTP_PORT] [-v VERSION]
|
||||||
@ -182,8 +171,10 @@ options:
|
|||||||
-v VERSION, --version VERSION
|
-v VERSION, --version VERSION
|
||||||
ERPNext or image version to install, defaults to latest stable
|
ERPNext or image version to install, defaults to latest stable
|
||||||
```
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
**Development setup using compose**
|
<details>
|
||||||
|
<summary><b>Development setup using compose</b></summary>
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
usage: easy-install.py develop [-h] [-n PROJECT]
|
usage: easy-install.py develop [-h] [-n PROJECT]
|
||||||
@ -193,8 +184,10 @@ options:
|
|||||||
-n PROJECT, --project PROJECT
|
-n PROJECT, --project PROJECT
|
||||||
Compose project name
|
Compose project name
|
||||||
```
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
**Exec into existing project**
|
<details>
|
||||||
|
<summary><b>Exec into existing project</b></summary>
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
usage: easy-install.py exec [-h] [-n PROJECT]
|
usage: easy-install.py exec [-h] [-n PROJECT]
|
||||||
@ -204,6 +197,7 @@ options:
|
|||||||
-n PROJECT, --project PROJECT
|
-n PROJECT, --project PROJECT
|
||||||
Project Name
|
Project Name
|
||||||
```
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
To use custom apps, you need to create a json file with list of apps and pass it to build command.
|
To use custom apps, you need to create a json file with list of apps and pass it to build command.
|
||||||
|
|
||||||
@ -251,18 +245,6 @@ In case the setup fails, the log file is saved under `$HOME/easy-install.log`. Y
|
|||||||
|
|
||||||
- Create an Issue in this repository with the log file attached.
|
- Create an Issue in this repository with the log file attached.
|
||||||
|
|
||||||
### Manual Installation
|
|
||||||
|
|
||||||
Some might want to manually setup a bench instance locally for development. To quickly get started on installing bench the hard way, you can follow the guide on [Installing Bench and the Frappe Framework](https://frappe.io/docs/user/en/installation).
|
|
||||||
|
|
||||||
You'll have to set up the system dependencies required for setting up a Frappe Environment. Checkout [docs/installation](https://github.com/frappe/bench/blob/develop/docs/installation.md) for more information on this. If you've already set up, install bench via pip:
|
|
||||||
|
|
||||||
|
|
||||||
```sh
|
|
||||||
$ pip install frappe-bench
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Basic Usage
|
## Basic Usage
|
||||||
|
|
||||||
**Note:** Apart from `bench init`, all other bench commands are expected to be run in the respective bench directory.
|
**Note:** Apart from `bench init`, all other bench commands are expected to be run in the respective bench directory.
|
||||||
@ -311,6 +293,8 @@ $ pip install frappe-bench
|
|||||||
|
|
||||||
For more in-depth information on commands and their usage, follow [Commands and Usage](https://github.com/frappe/bench/blob/develop/docs/commands_and_usage.md). As for a consolidated list of bench commands, check out [Bench Usage](https://github.com/frappe/bench/blob/develop/docs/bench_usage.md).
|
For more in-depth information on commands and their usage, follow [Commands and Usage](https://github.com/frappe/bench/blob/develop/docs/commands_and_usage.md). As for a consolidated list of bench commands, check out [Bench Usage](https://github.com/frappe/bench/blob/develop/docs/bench_usage.md).
|
||||||
|
|
||||||
|
![Help](resources/help.png)
|
||||||
|
|
||||||
|
|
||||||
## Custom Bench Commands
|
## Custom Bench Commands
|
||||||
|
|
||||||
@ -319,25 +303,21 @@ If you wish to extend the capabilities of bench with your own custom Frappe Appl
|
|||||||
|
|
||||||
## Guides
|
## Guides
|
||||||
|
|
||||||
- [Configuring HTTPS](https://frappe.io/docs/user/en/bench/guides/configuring-https.html)
|
- [Configuring HTTPS](https://docs.frappe.io/framework/user/en/bench/guides/configuring-https)
|
||||||
- [Using Let's Encrypt to setup HTTPS](https://frappe.io/docs/user/en/bench/guides/lets-encrypt-ssl-setup.html)
|
- [Using Let's Encrypt to setup HTTPS](https://docs.frappe.io/framework/user/en/bench/guides/lets-encrypt-ssl-setup)
|
||||||
- [Diagnosing the Scheduler](https://frappe.io/docs/user/en/bench/guides/diagnosing-the-scheduler.html)
|
- [Diagnosing the Scheduler](https://docs.frappe.io/framework/user/en/bench/guides/diagnosing-the-scheduler)
|
||||||
- [Change Hostname](https://frappe.io/docs/user/en/bench/guides/adding-custom-domains)
|
- [Change Hostname](https://docs.frappe.io/framework/user/en/bench/guides/adding-custom-domains)
|
||||||
- [Manual Setup](https://frappe.io/docs/user/en/bench/guides/manual-setup.html)
|
- [Manual Setup](https://docs.frappe.io/framework/user/en/tutorial/install-and-setup-bench)
|
||||||
- [Setup Production](https://frappe.io/docs/user/en/bench/guides/setup-production.html)
|
- [Setup Production](https://docs.frappe.io/framework/user/en/bench/guides/setup-production)
|
||||||
- [Setup Multitenancy](https://frappe.io/docs/user/en/bench/guides/setup-multitenancy.html)
|
- [Setup Multitenancy](https://docs.frappe.io/framework/user/en/bench/guides/setup-multitenancy)
|
||||||
- [Stopping Production](https://github.com/frappe/bench/wiki/Stopping-Production-and-starting-Development)
|
- [Stopping Production](https://github.com/frappe/bench/wiki/Stopping-Production-and-starting-Development)
|
||||||
|
|
||||||
For an exhaustive list of guides, check out [Bench Guides](https://frappe.io/docs/user/en/bench/guides).
|
|
||||||
|
|
||||||
|
|
||||||
## Resources
|
## Resources
|
||||||
|
|
||||||
- [Bench Commands Cheat Sheet](https://frappe.io/docs/user/en/bench/resources/bench-commands-cheatsheet.html)
|
- [Bench Commands Cheat Sheet](https://docs.frappe.io/framework/user/en/bench/resources/bench-commands-cheatsheet)
|
||||||
- [Background Services](https://frappe.io/docs/user/en/bench/resources/background-services.html)
|
- [Background Services](https://docs.frappe.io/framework/user/en/bench/resources/background-services)
|
||||||
- [Bench Procfile](https://frappe.io/docs/user/en/bench/resources/bench-procfile.html)
|
- [Bench Procfile](https://docs.frappe.io/framework/user/en/bench/resources/bench-procfile)
|
||||||
|
|
||||||
For an exhaustive list of resources, check out [Bench Resources](https://frappe.io/docs/user/en/bench/resources).
|
|
||||||
|
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
@ -348,49 +328,61 @@ To contribute and develop on the bench CLI tool, clone this repo and create an e
|
|||||||
|
|
||||||
This is not the recommended mode of installation for production. Instead, install the package from PyPI with: `pip install frappe-bench`
|
This is not the recommended mode of installation for production. Instead, install the package from PyPI with: `pip install frappe-bench`
|
||||||
|
|
||||||
|
### Clone and install
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ git clone https://github.com/frappe/bench ~/bench-repo
|
git clone https://github.com/frappe/bench ~/bench-repo
|
||||||
$ pip3 install -e ~/bench-repo
|
pip install -e ~/bench-repo
|
||||||
$ bench src
|
|
||||||
/Users/frappe/bench-repo
|
|
||||||
```
|
```
|
||||||
|
|
||||||
To clear up the editable install and switch to a stable version of bench, uninstall via pip and delete the corresponding egg file from the python path.
|
```shell
|
||||||
|
bench src
|
||||||
|
```
|
||||||
|
This should display $HOME/bench-repo
|
||||||
|
|
||||||
|
### To clear up the editable install and delete the corresponding egg file from the python path:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Delete bench installed in editable install
|
# Delete bench installed in editable install
|
||||||
$ rm -r $(find ~ -name '*.egg-info')
|
rm -r $(find ~ -name '*.egg-info')
|
||||||
$ pip3 uninstall frappe-bench
|
pip uninstall frappe-bench
|
||||||
|
|
||||||
# Install latest released version of bench
|
|
||||||
$ pip3 install -U frappe-bench
|
|
||||||
```
|
```
|
||||||
|
|
||||||
To confirm the switch, check the output of `bench src`. It should change from something like `$HOME/bench-repo` to `/usr/local/lib/python3.6/dist-packages` and stop the editable install warnings from getting triggered at every command.
|
### Then you can install the latest from PyPI
|
||||||
|
```sh
|
||||||
|
pip install -U frappe-bench
|
||||||
|
```
|
||||||
|
|
||||||
|
To confirm the switch, check the output of `bench src`. It should change from something like `$HOME/bench-repo` to `/usr/local/lib/python3.12/dist-packages` and stop the editable install warnings from getting triggered at every command.
|
||||||
|
|
||||||
|
|
||||||
## Releases
|
## Releases
|
||||||
|
|
||||||
Bench's version information can be accessed via `bench.VERSION` in the package's __init__.py file. Eversince the v5.0 release, we've started publishing releases on GitHub, and PyPI.
|
Bench's version information can be accessed via `bench.VERSION` in the package's __init__.py file. Ever since the v5.0 release, we've started publishing releases on GitHub, and PyPI.
|
||||||
|
|
||||||
GitHub: https://github.com/frappe/bench/releases
|
[GitHub](https://github.com/frappe/bench/releases)
|
||||||
|
[Pypi](https://pypi.org/project/frappe-bench)
|
||||||
PyPI: https://pypi.org/project/frappe-bench
|
|
||||||
|
|
||||||
|
|
||||||
From v5.3.0, we partially automated the release process using [@semantic-release](.github/workflows/release.yml). Under this new pipeline, we do the following steps to make a release:
|
## Learn and connect
|
||||||
|
|
||||||
1. Merge `develop` into the `staging` branch
|
- [Discuss](https://discuss.frappe.io/)
|
||||||
1. Merge `staging` into the latest stable branch, which is `v5.x` at this point.
|
- [YouTube](https://www.youtube.com/@frappetech)
|
||||||
|
|
||||||
This triggers a GitHub Action job that generates a bump commit, drafts and generates a GitHub release, builds a Python package and publishes it to PyPI.
|
## Contribute
|
||||||
|
To contribute to this project, please review the [Contribution Guidelines](https://github.com/frappe/erpnext/wiki/Contribution-Guidelines) for detailed instructions. Make sure to follow our [Code of Conduct](https://github.com/frappe/frappe/blob/develop/CODE_OF_CONDUCT.md) to keep the community welcoming and respectful.
|
||||||
|
|
||||||
The intermediate `staging` branch exists to mediate the `bench.VERSION` conflict that would arise while merging `develop` and stable. On develop, the version has to be manually updated (for major release changes). The version tag plays a role in deciding when checks have to be made for new Bench releases.
|
## Security
|
||||||
|
The Frappe team and community prioritize security. If you discover a security issue, please report it via our [Security Report Form](https://frappe.io/security).
|
||||||
|
Your responsible disclosure helps keep Frappe and its users safe. We'll do our best to respond quickly and keep you informed throughout the process.
|
||||||
|
For guidelines on reporting, check out our [Reporting Guidelines](https://frappe.io/security), and review our [Logo and Trademark Policy](https://github.com/frappe/erpnext/blob/develop/TRADEMARK_POLICY.md) for branding information.
|
||||||
|
|
||||||
> Note: We may want to kill the convention of separate branches for different version releases of Bench. We don't need to maintain this the way we do for Frappe & ERPNext. A single branch named `stable` would sustain.
|
<br/><br/>
|
||||||
|
<div align="center">
|
||||||
## License
|
<a href="https://frappe.io" target="_blank">
|
||||||
|
<picture>
|
||||||
This repository has been released under the [GNU GPLv3 License](LICENSE).
|
<source media="(prefers-color-scheme: dark)" srcset="https://frappe.io/files/Frappe-white.png">
|
||||||
|
<img src="https://frappe.io/files/Frappe-black.png" alt="Frappe Technologies" height="28"/>
|
||||||
|
</picture>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
BIN
resources/help.png
Normal file
BIN
resources/help.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 113 KiB |
BIN
resources/logo.png
Normal file
BIN
resources/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
Loading…
Reference in New Issue
Block a user