Menu
AkurAI-Build
publicLatest change 32946d79ecd7d436b3978f5757db6b3a392b3ca8 - AKURAI-BUILD-11 consolidate self-hosted deployment by Ólafur Búi Ólafsson
#!/bin/sh
set -eu
root=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
cd "$root"
[ "${HOSTNAME:-}" != akurai-build-worker ] || {
echo 'compose-release must run outside the worker container' >&2
exit 1
}
version=$(sed -n 's/^version = "\([^"]*\)"/\1/p' Cargo.toml | sed -n '1p')
latest=$(sed -n 's/^## \([0-9][0-9.]*\) .*/\1/p' CHANGELOG.md | sed -n '1p')
commit=$(git rev-parse --verify HEAD)
[ -n "$version" ]
[ "$version" = "$latest" ] || {
echo "Cargo version $version does not match changelog $latest" >&2
exit 1
}
test -x target/release/akurai
# Both images come from one immutable revision and share one release tag.
docker build --target service-prebuilt \
--tag "akurai-build-service:$version" \
--tag "akurai-build-service:$commit" \
--file deploy/Dockerfile .
docker build --target worker \
--tag "akurai-build-worker:$version" \
--tag "akurai-build-worker:$commit" \
--file deploy/Dockerfile .
install_dir="$HOME/.local/lib/akurai-build"
install -d -m 700 "$install_dir"
install -m 755 target/release/akurai "$install_dir/akurai.next"
mv -f "$install_dir/akurai.next" "$install_dir/akurai"
export AKURAI_BUILD_VERSION="$version"
docker compose --project-name akurai-build --file deploy/docker-compose.yml up -d
for endpoint in http://127.0.0.1:3210/api/health http://127.0.0.1:3211/api/health; do
attempt=0
until curl -fsS "$endpoint" >/dev/null; do
attempt=$((attempt + 1))
[ "$attempt" -lt 60 ] || {
docker compose --project-name akurai-build --file deploy/docker-compose.yml ps >&2
exit 1
}
sleep 2
done
done
docker compose --project-name akurai-build --file deploy/docker-compose.yml ps
printf 'release=%s commit=%s service=healthy worker=healthy\n' "$version" "$commit"