publish-package: implement docker branch with lock-mgr and docker login/push
This commit is contained in:
@@ -1,18 +1,10 @@
|
||||
#!/bin/bash
|
||||
# publish-package - Publish packages to various registries
|
||||
# Usage:
|
||||
# publish-package docker <registry> <image> <tag> --proj <repo>
|
||||
# publish-package nuget <source> <package-file> --proj <repo>
|
||||
# publish-package pypi <package-file> --proj <repo>
|
||||
# publish-package npm --proj <repo>
|
||||
|
||||
set -e
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
COMMAND=""
|
||||
REGISTRY=""
|
||||
IMAGE=""
|
||||
TAG=""
|
||||
SOURCE=""
|
||||
PACKAGE_FILE=""
|
||||
REPO=""
|
||||
|
||||
@@ -62,6 +54,60 @@ if [[ -z "$COMMAND" ]] || [[ -z "$REPO" ]]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
# TODO: implement publish logic
|
||||
echo "publish-package: $COMMAND not yet implemented"
|
||||
exit 1
|
||||
do_docker() {
|
||||
if [[ -z "$REGISTRY" ]] || [[ -z "$IMAGE" ]] || [[ -z "$TAG" ]]; then
|
||||
echo "Error: docker requires <registry> <image> <tag>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
OWNER=$(ego-mgr get default-username)
|
||||
if [[ -z "$OWNER" ]]; then
|
||||
echo "Error: cannot get username from ego-mgr"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
KEY=$(python3 -c "import uuid; print(uuid.uuid4())")
|
||||
|
||||
LOCKFILE="$HOME/.openclaw/.docker"
|
||||
lock-mgr acquire "$LOCKFILE" "$KEY"
|
||||
|
||||
trap 'lock-mgr release "$LOCKFILE" "$KEY" 2>/dev/null || true' EXIT
|
||||
|
||||
echo "Logging in to $REGISTRY..."
|
||||
docker login "$REGISTRY" -u "$OWNER" -p "$(secret-mgr get-secret --key git)" 2>/dev/null
|
||||
|
||||
FULL_IMAGE="${REGISTRY}/${OWNER}/${IMAGE}:${TAG}"
|
||||
echo "Building: $FULL_IMAGE"
|
||||
|
||||
cd "$REPO"
|
||||
docker build -t "$FULL_IMAGE" .
|
||||
|
||||
echo "Pushing: $FULL_IMAGE"
|
||||
docker push "$FULL_IMAGE"
|
||||
|
||||
lock-mgr release "$LOCKFILE" "$KEY"
|
||||
|
||||
echo "Done: $FULL_IMAGE"
|
||||
}
|
||||
|
||||
do_nuget() {
|
||||
echo "publish-package nuget: not yet implemented"
|
||||
exit 1
|
||||
}
|
||||
|
||||
do_pypi() {
|
||||
echo "publish-package pypi: not yet implemented"
|
||||
exit 1
|
||||
}
|
||||
|
||||
do_npm() {
|
||||
echo "publish-package npm: not yet implemented"
|
||||
exit 1
|
||||
}
|
||||
|
||||
case "$COMMAND" in
|
||||
docker) do_docker ;;
|
||||
nuget) do_nuget ;;
|
||||
pypi) do_pypi ;;
|
||||
npm) do_npm ;;
|
||||
esac
|
||||
Reference in New Issue
Block a user