diff --git a/README.md b/README.md index 69ee06b4..b6c2de30 100644 --- a/README.md +++ b/README.md @@ -7,67 +7,6 @@ The Co-op Cloud utility belt 🎩🐇 -`abra` is a command-line tool for managing your own [Co-op Cloud](https://coopcloud.tech). It can provision new servers, create apps, deploy them and a whole lot of other things. Please see [docs.coopcloud.tech](https://docs.coopcloud.tech) for more extensive documentation. +`abra` is our flagship client & command-line tool which has been developed specifically in the context of the Co-op Cloud project for the purpose of making day-to-day operations for [operators](https://docs.coopcloud.tech/operators/) and [maintainers](https://docs.coopcloud.tech/maintainers/) as convenient as possible. It is libre software, written in [Go](https://go.dev) and maintained and extended by the community ❤ -## Quick install - -```bash -curl https://install.abra.autonomic.zone | bash -``` - -Or using the latest release candidate (extra experimental!): - -```bash -curl https://install.abra.autonomic.zone | bash -s -- --rc -``` - -Source for this script is in [scripts/installer/installer](./scripts/installer/installer). - -## Hacking - -### Getting started - -Install [direnv](https://direnv.net), run `cp .envrc.sample .envrc`, then run `direnv allow` in this directory. This will set coopcloud repos as private due to [this bug.](https://git.coopcloud.tech/coop-cloud/coopcloud.tech/issues/20#issuecomment-8201). Or you can run `go env -w GOPRIVATE=coopcloud.tech` but I'm not sure how persistent this is. - -Install [Go >= 1.16](https://golang.org/doc/install) and then: - -- `make build` to build -- `./abra` to run commands -- `make test` will run tests -- `make install` will install it to `$GOPATH/bin` -- `go get ` and `go mod tidy` to add a new dependency - -Our [Drone CI configuration](.drone.yml) runs a number of sanity on each pushed commit. See the [Makefile](./Makefile) for more handy targets. - -Please use the [conventional commit format](https://www.conventionalcommits.org/en/v1.0.0/) for your commits so we can automate our change log. - -### Versioning - -We use [goreleaser](https://goreleaser.com) to help us automate releases. We use [semver](https://semver.org) for versioning all releases of the tool. While we are still in the public alpha release phase, we will maintain a `0.y.z-alpha` format. Change logs are generated from our commit logs. We are still working this out and aim to refine our release praxis as we go. - -For developers, while using this `-alpha` format, the `y` part is the "major" version part. So, if you make breaking changes, you increment that and _not_ the `x` part. So, if you're on `0.1.0-alpha`, then you'd go to `0.1.1-alpha` for a backwards compatible change and `0.2.0-alpha` for a backwards incompatible change. - -### Making a new release - -- Change `ABRA_VERSION` to match the new tag in [`scripts`](./scripts/installer/installer) (use [semver](https://semver.org)) -- Commit that change (e.g. `git commit -m 'chore: publish next tag x.y.z-alpha'`) -- Make a new tag (e.g. `git tag -a x.y.z-alpha`) -- Push the new tag (e.g. `git push && git push --tags`) -- Wait until the build finishes on [build.coopcloud.tech](https://build.coopcloud.tech/coop-cloud/abra) -- Deploy the new installer script (e.g. `cd ./scripts/installer && make`) -- Check the release worked, (e.g. `abra upgrade; abra -v`) - -### Fork maintenance - -#### `godotenv` - -We maintain a fork of [godotenv](https://github.com/Autonomic-Cooperative/godotenv) for two features: - -1. multi-line env var support -2. inline comment parsing - -You can upgrade the version here by running `go get github.com/Autonomic-Cooperative/godotenv@` where `` is the latest commit you want to pin to. At time of writing, `go get github.com/Autonomic-Cooperative/godotenv@b031ea1211e7fd297af4c7747ffb562ebe00cd33` is the command you want to run to maintain the above functionality. - -#### `docker/client` - -A number of modules in [pkg/upstream](./pkg/upstream) are copy/pasta'd from the upstream [docker/docker/client](https://pkg.go.dev/github.com/docker/docker/client). We had to do this because upstream are not exposing their API as public. +Please see [docs.coopcloud.tech/abra/](https://docs.coopcloud.tech/abra/) for help on install, upgrade, hacking, troubleshooting & more!