#!/usr/bin/env bash #MISE description="Release a container image by creating a git tag" set -euo pipefail CONTAINER="${1:-}" VERSION="${2:-}" if [[ -z "$CONTAINER" || -z "$VERSION" ]]; then echo "Usage: mise run container-tag-and-release " echo "" echo "Run 'mise run container-list' to see available containers and recent tags." exit 1 fi # Validate version format if [[ ! "$VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "Error: Version must be in format vX.Y.Z (e.g. v1.0.0)" exit 1 fi TAG="${CONTAINER}-${VERSION}" echo "Creating release tag: $TAG" echo "" # Check if tag already exists if git rev-parse "$TAG" >/dev/null 2>&1; then echo "Error: Tag '$TAG' already exists" echo "Existing tags for $CONTAINER:" git tag -l "${CONTAINER}-v*" | sort -V | tail -5 exit 1 fi # Check if container directory exists CONTAINER_DIR="containers/${CONTAINER}" if [[ ! -f "$CONTAINER_DIR/Dockerfile" ]]; then echo "Error: No Dockerfile found at '$CONTAINER_DIR/Dockerfile'" echo "" echo "Available containers:" for dir in containers/*/; do [[ -d "$dir" ]] && echo " - $(basename "$dir")" done exit 1 fi # Image name follows convention: blumeops/ IMAGE="blumeops/${CONTAINER}" echo "Container: $CONTAINER" echo "Directory: $CONTAINER_DIR" echo "Image: registry.ops.eblu.me/$IMAGE:$VERSION" echo "" # Create and push tag git tag "$TAG" git push origin "$TAG" echo "" echo "Tag '$TAG' created and pushed" echo "" echo "The workflow will now build and push:" echo " registry.ops.eblu.me/$IMAGE:$VERSION" echo "" echo "Monitor the build at:" echo " https://forge.ops.eblu.me/eblume/blumeops/actions"