A CLI-first git forge.

cli forge git self-hosted

https://gitbay.org

Commit 0b2bc84ade

0b2bc84adec8d101fdb280b606a3b300eec628a1

parent: 7d538e7e94

Verified · cmc ci/build: success ci/test: failure

cmc <hello@cleberg.net> · 2026-08-31T16:11:00Z

CI runs the suite, and asserts what the suite needs

A green check meant the tree compiled and vetted. It now means the tests
pass, in a job of its own so build and vet still answer in seconds rather
than waiting behind ten minutes of e2e.

The suite drives real git, ssh, sshd and gpg, and several tests skip
themselves when a tool is absent — on a host missing them CI would have
gone green having quietly tested less, which is worse than red. So the job
asserts its prerequisites before running anything.

go's own timeout is 20m, under the runner's 30m, so a hang is reported as
the test that hung rather than as a killed build.

Closes #63
.gitbay/ci.yml +12
@@ -1,5 +1,17 @@
11jobs:
2 # Fast feedback: this finishes in seconds, so it is not held behind the
3 # suite.
24 build:
35 steps:
46 - go build ./...
57 - go vet ./...
8 # The suite drives real git, ssh, sshd and gpg. Several tests skip
9 # themselves when a tool is absent, so the prerequisites are asserted
10 # first: a green check that quietly tested less is worse than a red one.
11 # The 20m is under the runner's own 30m limit, so go times out first and
12 # says which test hung instead of the runner killing it blind.
13 test:
14 steps:
15 - for t in git git-lfs gpg; do command -v $t >/dev/null || { echo "missing $t"; exit 1; }; done
16 - test -x /usr/sbin/sshd || { echo "missing /usr/sbin/sshd"; exit 1; }
17 - go test ./... -count=1 -timeout 20m