|
2 | 2 |
|
3 | 3 | A deployment tool that makes it as easy and hassle-free as it can be. No matter your skill level, it only requires a minute to setup, with no complicated configurations or special permissions. |
4 | 4 |
|
5 | | -Steer relies on Git to keep track of what has changed in the project, relieving itself from the heavy burden of version control. Files are pushed on the server either via FTP or SFTP, supporting basically any host, from shared to dedicated or cloud. But it's not just a tool that reads the file tree and uploads. It supports multiple servers, deployment previews, versioning and quite some more. |
| 5 | +Steer relies on Git to keep track of what has changed in the project, relieving itself from the heavy burden of version control. Using the raw performance and concurrency of Go, it pushes files in parallel on either a FTP or SFTP server. But it's not just a tool that reads the file tree and uploads. It supports multiple servers, deployment previews, versioning and quite some more. |
6 | 6 |
|
7 | | -## How it Works |
8 | | - |
9 | | -A config file is saved in the root of the local project that holds the configuration data: server address, credentials, paths, branch, etc. Steer reads the config, connects to the server and searches for a file named `.steer-revision`. It is that remote revision file that holds the latest deployment commit. When deploying, the list of changed files are retrieved using git, so the project you're working on needs to be a git repository. |
| 7 | +While there are plenty of deployment tools that try to do a lot, not everyone needs all of their features. Teams of developers will obviously have a great setup, with jobs, hooks, commands and so on. The rest, freelancers, hobbyists or solo developers just want to get the job done and not worry about infrustructure. |
10 | 8 |
|
11 | | -## But Why? |
| 9 | +## How it Works |
12 | 10 |
|
13 | | -While there are plenty of deployment tools that try to do a lot, not everyone needs all of their features. Teams of developers will obviously have a great setup, with jobs, hooks, commands and so on. The rest, freelancers, hobbyists or solo developers just want to get the job done and not worry about infrustructure. Steer doesn't try to do more than it should and with its simple approach, it lets the developer worry about code. |
| 11 | +A config file is saved in the root of the local project that holds the configuration data: server address, credentials, paths, branch, etc. Steer reads the config, connects to the server and searches for a file named `.steer-revision`. It is that remote revision file that holds the latest deployment commit. When deploying, the list of changed files are retrieved using git, uploading new or modifies files and deleting the removed ones. |
14 | 12 |
|
15 | 13 | ## Installation |
16 | 14 |
|
@@ -64,6 +62,7 @@ versions = false |
64 | 62 | logger = false |
65 | 63 | include = file.js, folder |
66 | 64 | exclude = file.css, file.html |
| 65 | +maxclients = 3 |
67 | 66 |
|
68 | 67 | [staging] |
69 | 68 | scheme = sftp |
@@ -126,6 +125,18 @@ The `commit` and `fresh` options can be used alongside server arguments: |
126 | 125 | steer deploy production -c=SOMEHASH |
127 | 126 | ``` |
128 | 127 |
|
| 128 | +## Parallel Operations |
| 129 | + |
| 130 | +Doing a single operation synchronously would make deployment quite a slow process, especially when a lot of files are involved. Fortunately, Steer can upload and delete files in parallel on both FTP and SFTP, speeding up the process substantially. The number of concurrent operations varies from the server configuration, so you may start with a sensible number like 3 (the default) and increase it until you notice errors while deploying. |
| 131 | + |
| 132 | +The `maxclients` configuration option sets the maximum number of concurrent operations. Set to 1 for no parallelism. |
| 133 | + |
| 134 | +``` |
| 135 | +[production] |
| 136 | +; ... |
| 137 | +maxclients = 5 |
| 138 | +``` |
| 139 | + |
129 | 140 | ## Preview |
130 | 141 |
|
131 | 142 | Before running a deploy, it's generally not a bad idea to do a preview run. This command gets the revision, calculates which files have changed and only displays them, without uploading anything on the server. It's especially useful on big updates. |
@@ -258,4 +269,4 @@ steer deploy -h |
258 | 269 |
|
259 | 270 | Steer was developed by Fadion Dashi, a freelance web and mobile developer from Tirana. |
260 | 271 |
|
261 | | -Most of the inspiration for this project comes from [PHPloy](https://github.com/banago/PHPloy), a deployment tool created by a dear friend, in which I've also been involved. I'm aiming feature parity and even added some of my own ideas. |
| 272 | +Most of the inspiration for this project comes from [PHPloy](https://github.com/banago/PHPloy), a deployment tool created by a dear friend, in which I've also been involved. I'm aiming to implement most of its features, but also have added some of my own. The main advantage of Steer right now is its performance, especially with parallel operations. |
0 commit comments