gw
Watch local git repositories, keep in sync with remote and run commands.
Motivation #
gw
is a lightweight binary that manages a simple pull-based continuous deployment for you. It watches a local git repository, fetches if the remote changes, and builds or deploys your code. Current CD solutions either lock you into proprietary software (e.g. Netlify or Vercel) or complicated to run and manage (e.g. ArgoCD). gw
is a service that can run everywhere (even behind NAT or VPN), synchronizes code with your remote and deploys immediately, saving your developers time and energy.
Features of gw
:
- lightweight: it is only a 2.5MB binary (~7MB with git and ssh statically built-in)
- runs anywhere: use it on baremetal, systemd or docker
- open source: written entirely in Rust, you can build it from source in a few minutes
- pull-based: works on any network, even behind a NAT or VPN
- flexible: build, deploy, restart or anything you can imagine
Installation #
To get started with gw
, you can use the install script:
curl https://gw.danielgrants.com/install.sh | sh
For more installation methods, see Installation.
Get started #
To use gw
, you have to point it to your local repository and it will pull changes automatically. You can run scripts on every pull to build or restart your deployments with the --script
flag.
gw /path/to/repo --script 'run build process' --script 'restart deployment'
For your first steps with gw
, see Get started.
Next steps #
But this is not all gw
can do. With a little creativity you can create a lot of things, for example:
- pull changes for development and get a notification;
- rollout a docker-compose deployment continously;
- build on all commits for a minimal Netlify alternative,
...and many thing else. For a complete list, check out the guides page.