||3 weeks ago|
|.chglog||3 months ago|
|.gitea||1 month ago|
|cli||3 weeks ago|
|cmd/abra||1 month ago|
|pkg||4 weeks ago|
|scripts||4 weeks ago|
|tests/resources||3 months ago|
|.drone.yml||1 month ago|
|.envrc.sample||1 month ago|
|.gitignore||1 month ago|
|.goreleaser.yml||1 month ago|
|Makefile||1 month ago|
|README.md||1 month ago|
|go.mod||3 weeks ago|
|go.sum||3 weeks ago|
The Co-op Cloud utility belt 🎩🐇
abra is a command-line tool for managing your own Co-op Cloud. It can provision new servers, create applications, deploy them, run backup and restore operations and a whole lot of other things. It is the go-to tool for day-to-day operations when managing a Co-op Cloud instance.
Arch-based Linux Distros
yay -S abra-git # or abra
Debian-based Linux Distros
Build from source
git clone https://git.coopcloud.tech/coop-cloud/abra cd abra go env -w GOPRIVATE=coopcloud.tech make install
The abra binary will be in
/etc/bash_completion.d/ and rename
it to abra.
sudo cp scripts/autocomplete/bash /etc/bash_completion.d/abra source /etc/bash_completion.d/abra
(fi)zsh doesn't have an autocompletion folder by default but you can create one, then copy
scripts/autocomplete/zsh into it and add a couple lines to your
sudo mkdir /etc/zsh/completion.d/ sudo cp scripts/autocomplete/zsh /etc/zsh/completion.d/abra echo "PROG=abra\n_CLI_ZSH_AUTOCOMPLETE_HACK=1\nsource /etc/zsh/completion.d/abra" >> ~/.zshrc
(replace .zshrc with ~/.fizsh/.fizshrc if you use fizsh)
Install direnv, run
cp .envrc.sample .envrc, then run
direnv allow in this directory. This will set coopcloud repos as private due to this bug.. Or you can run
go env -w GOPRIVATE=coopcloud.tech but I'm not sure how persistent this is.
Install Go >= 1.16 and then:
make buildto build
./abrato run commands
make testwill run tests
Please use the conventional commit format for your commits so we can automate our change log.
We use goreleaser to help us automate releases. We use semver 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
ABRA_VERSIONto match the new tag in
- Commit that change (e.g.
git commit -m 'chore: publish next tag 0.3.1-alpha')
- Make a new tag (e.g.
git tag 0.y.z-alpha)
- Push the new tag (e.g.
git push && git push --tags)
- Wait until the build finishes on build.coopcloud.tech
- Deploy the new installer script (e.g.
cd ./scripts/installer && make)
- Check the release worked, (e.g.
abra upgrade; abra version)
We maintain a fork of godotenv for two features:
- multi-line env var support
- inline comment parsing
You can upgrade the version here by running
go get github.com/Autonomic-Cooperative/godotenv@<commit> where
<commit> is the
latest commit you want to pin to. We are aiming to migrate to YAML format for the environment configuration, so this should only
be a temporary thing.