44 lines
1.0 KiB
Bash
Executable File
44 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
IMAGE="ghcr.io/symclaw/symclaw"
|
|
|
|
# Extract version from workspace Cargo.toml
|
|
VERSION=$(grep -m1 'version *= *"' "$PROJECT_DIR/Cargo.toml" | sed 's/.*"\(.*\)".*/\1/')
|
|
|
|
PUSH=false
|
|
PLATFORM=""
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--push) PUSH=true; shift ;;
|
|
--platform) PLATFORM="$2"; shift 2 ;;
|
|
*) echo "Usage: $0 [--push] [--platform linux/amd64,linux/arm64]"; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
export DOCKER_BUILDKIT=1
|
|
|
|
BUILD_ARGS=(
|
|
-t "${IMAGE}:${VERSION}"
|
|
-t "${IMAGE}:latest"
|
|
-f "$PROJECT_DIR/Dockerfile"
|
|
)
|
|
|
|
if [[ -n "$PLATFORM" ]]; then
|
|
BUILD_ARGS+=(--platform "$PLATFORM")
|
|
fi
|
|
|
|
if $PUSH; then
|
|
BUILD_ARGS+=(--push)
|
|
echo "Building and pushing ${IMAGE}:{${VERSION},latest} (platform: ${PLATFORM:-default})…"
|
|
docker buildx build "${BUILD_ARGS[@]}" "$PROJECT_DIR"
|
|
else
|
|
echo "Building ${IMAGE}:{${VERSION},latest}…"
|
|
docker build "${BUILD_ARGS[@]}" "$PROJECT_DIR"
|
|
fi
|
|
|
|
echo "Done."
|