Fix federation flows and add versioned updater
This commit is contained in:
Executable
+81
@@ -0,0 +1,81 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
IMAGE_REPO="${IMAGE_REPO:-ghcr.io/gnosyslabs/synapsis}"
|
||||
PACKAGE_API="${PACKAGE_API:-/orgs/GnosysLabs/packages/container/synapsis/versions?per_page=100}"
|
||||
BUILDER="${BUILDER:-colima}"
|
||||
PLATFORMS="${PLATFORMS:-linux/amd64,linux/arm64}"
|
||||
DATE_PREFIX="${DATE_PREFIX:-$(date -u +%Y.%m.%d)}"
|
||||
SOURCE_REPO="${SOURCE_REPO:-https://github.com/GnosysLabs/Synapsis}"
|
||||
|
||||
require_command() {
|
||||
if ! command -v "$1" >/dev/null 2>&1; then
|
||||
echo "❌ Required command not found: $1" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
require_command docker
|
||||
require_command gh
|
||||
require_command git
|
||||
|
||||
CURRENT_SHA="$(git rev-parse --short HEAD)"
|
||||
CURRENT_FULL_SHA="$(git rev-parse HEAD)"
|
||||
BUILD_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
||||
|
||||
existing_tags="$(
|
||||
gh api "${PACKAGE_API}" --paginate --jq '.[].metadata.container.tags[]?' 2>/dev/null || true
|
||||
)"
|
||||
|
||||
max_build=0
|
||||
for tag in ${existing_tags}; do
|
||||
case "${tag}" in
|
||||
"${DATE_PREFIX}".*)
|
||||
build_number="${tag##${DATE_PREFIX}.}"
|
||||
case "${build_number}" in
|
||||
''|*[!0-9]*)
|
||||
;;
|
||||
*)
|
||||
if [ "${build_number}" -gt "${max_build}" ]; then
|
||||
max_build="${build_number}"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
next_build=$((max_build + 1))
|
||||
APP_VERSION="${DATE_PREFIX}.${next_build}"
|
||||
GITHUB_URL="${SOURCE_REPO}/commit/${CURRENT_FULL_SHA}"
|
||||
|
||||
echo "========================================"
|
||||
echo " Synapsis Docker Publish"
|
||||
echo "========================================"
|
||||
echo " Version: ${APP_VERSION}"
|
||||
echo " Commit: ${CURRENT_SHA}"
|
||||
echo " Image: ${IMAGE_REPO}"
|
||||
echo "========================================"
|
||||
|
||||
docker buildx build \
|
||||
--builder "${BUILDER}" \
|
||||
--platform "${PLATFORMS}" \
|
||||
--build-arg "APP_VERSION=${APP_VERSION}" \
|
||||
--build-arg "APP_COMMIT=${CURRENT_FULL_SHA}" \
|
||||
--build-arg "APP_BUILD_DATE=${BUILD_DATE}" \
|
||||
--build-arg "APP_GITHUB_URL=${GITHUB_URL}" \
|
||||
--build-arg "APP_IMAGE_REPO=${IMAGE_REPO}" \
|
||||
--build-arg "APP_SOURCE_REPO=${SOURCE_REPO}" \
|
||||
-f docker/Dockerfile \
|
||||
-t "${IMAGE_REPO}:latest" \
|
||||
-t "${IMAGE_REPO}:${APP_VERSION}" \
|
||||
-t "${IMAGE_REPO}:${CURRENT_SHA}" \
|
||||
--push \
|
||||
.
|
||||
|
||||
echo ""
|
||||
echo "✅ Published:"
|
||||
echo " ${IMAGE_REPO}:latest"
|
||||
echo " ${IMAGE_REPO}:${APP_VERSION}"
|
||||
echo " ${IMAGE_REPO}:${CURRENT_SHA}"
|
||||
Reference in New Issue
Block a user