merge-check.sh runs the suite, then builds the controller the mesh runs with this change's validator in place of the one it vendors and runs the merge gate: a change to the node-engine that would refuse what the mesh sends today fails its pull request, naming the machine. The installer's first user list lets the controller say a check's verdict and hear a pull request's head, as the controller now composes it.
35 lines
1.6 KiB
Bash
Executable File
35 lines
1.6 KiB
Bash
Executable File
#!/bin/sh
|
|
# The merge check of the node-engine (novox/hq to-be 45 §9), run by the build seat on every pull request
|
|
# before it merges, beside the controller the mesh runs and the facts snapshot the controller keeps.
|
|
#
|
|
# 1. formatted, vetted, and the whole suite;
|
|
# 2. the merge gate **with this change's validator**: the controller the mesh runs is built with the
|
|
# validator from this tree in place of the one it vendors, and every machine of the snapshot is
|
|
# composed and validated by it. A change to the node-engine that would refuse what the mesh sends
|
|
# today fails here, naming the machine — not on the first machine it reaches.
|
|
set -eu
|
|
unformatted=$(gofmt -l .)
|
|
if [ -n "$unformatted" ]; then
|
|
echo "not gofmt'd:"
|
|
echo "$unformatted"
|
|
exit 1
|
|
fi
|
|
go vet ./...
|
|
go test -count=1 ./...
|
|
|
|
beside="${MESH_CHECK_BESIDE:?the controller the mesh runs is cloned beside this check}"
|
|
judge_tree="$beside/mesh-controller"
|
|
[ -f "$judge_tree/cmd/mesh-controller/merge_gate.go" ] || judge_tree="$beside/mesh-controller-main"
|
|
vendored="$judge_tree/vendor/github.com/novox/mesh-host"
|
|
for pkg in validate internal/declaration; do
|
|
rm -f "$vendored/$pkg"/*.go
|
|
for f in "$pkg"/*.go; do
|
|
case "$f" in *_test.go) ;; *) cp "$f" "$vendored/$pkg/" ;; esac
|
|
done
|
|
done
|
|
judge="$beside/bin/judge-with-this-validator"
|
|
(cd "$judge_tree" && CGO_ENABLED=0 GOFLAGS=-mod=vendor GOPROXY=off go build -o "$judge" ./cmd/mesh-controller)
|
|
"$judge" merge-gate --facts "$MESH_FACTS" --store "$MESH_GATE_POSTGRES" \
|
|
--repository "${MESH_CHECK_REPOSITORY:-novox/mesh-host}" --tree . \
|
|
--changed "${MESH_CHECK_CHANGED:-}" --json > "${MESH_CHECK_VERDICT:-/dev/null}"
|