Get a fresh copy of the
abra source code from here.
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
make installwill install it to
go get <package>and
go mod tidyto add a new dependency
Please use the conventional commit format for your commits so we can automate our change log.
If there's no official release for the architecture you use, you can cross-compile
abra very easily. Clone the source code from here and then:
- enter the
git tag -lto see the list of tags, choose the latest one
git checkout <tag>, where
<tag>is the latest version
GOOS=<os> GOARCH=<arch> [GOARM=<arm>] make build. You only have to use
GOARMif you're building for ARM, this specifies the ARM version (5,6,7 etc). See this for a list of all supported OS'es and architectures.
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 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
- Deploy the new installer script (e.g.
cd ./scripts/installer && make)
- Check the release worked, (e.g.
abra upgrade; abra -v)
We maintain a fork of godotenv because we need inline comment parsing for environment files. 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. At time of writing,
go get github.com/Autonomic-Cooperative/godotenv@b031ea1211e7fd297af4c7747ffb562ebe00cd33 is the command you want to run to maintain the above functionality.