- Update ToolboxStack/output/toolbox-template/Dockerfile with latest container settings - Update ToolboxStack/output/toolbox-template/PROMPT with enhanced instructions - Update ToolboxStack/output/toolbox-template/SEED with updated seed data - Update ToolboxStack/output/toolbox-template/aqua.yaml with refined tool management - Update ToolboxStack/output/toolbox-template/build.sh with improved build process - Update ToolboxStack/output/toolbox-template/docker-compose.yml with enhanced service definitions - Update ToolboxStack/output/toolbox-template/release.sh with enhanced release process - Update ToolboxStack/output/toolbox-template/run.sh with improved runtime configuration This enhances the toolbox template for creating new developer environments.
111 lines
3.2 KiB
Bash
Executable File
111 lines
3.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
usage() {
|
|
cat <<'EOU'
|
|
Usage: ./release.sh [--dry-run] [--allow-dirty] <semver>
|
|
|
|
Examples:
|
|
./release.sh 0.2.0
|
|
./release.sh --dry-run 0.2.0
|
|
|
|
This script rebuilds the toolbox image, tags it as:
|
|
- tsysdevstack-toolboxstack-<name>:dev
|
|
- tsysdevstack-toolboxstack-<name>:release-current
|
|
- tsysdevstack-toolboxstack-<name>:v<semver>
|
|
|
|
When run without --dry-run it pushes all three tags.
|
|
EOU
|
|
}
|
|
|
|
DRY_RUN=false
|
|
ALLOW_DIRTY=false
|
|
VERSION=""
|
|
|
|
while (( $# > 0 )); do
|
|
case "$1" in
|
|
--dry-run)
|
|
DRY_RUN=true
|
|
shift
|
|
;;
|
|
--allow-dirty)
|
|
ALLOW_DIRTY=true
|
|
shift
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
-*)
|
|
echo "Unknown option: $1" >&2
|
|
usage
|
|
exit 1
|
|
;;
|
|
*)
|
|
VERSION="$1"
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [[ -z "${VERSION}" ]]; then
|
|
echo "Error: semantic version is required." >&2
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "${VERSION}" =~ ^v?([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then
|
|
SEMVER="v${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.${BASH_REMATCH[3]}"
|
|
else
|
|
echo "Error: version must be semantic (e.g., 0.2.0 or v0.2.0)." >&2
|
|
exit 1
|
|
fi
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "${SCRIPT_DIR}" && git rev-parse --show-toplevel 2>/dev/null || true)"
|
|
|
|
if [[ -n "${REPO_ROOT}" && "${ALLOW_DIRTY}" != "true" ]]; then
|
|
if ! git -C "${REPO_ROOT}" diff --quiet --ignore-submodules --exit-code; then
|
|
echo "Error: git working tree has uncommitted changes. Please commit or stash before releasing." >&2
|
|
exit 1
|
|
fi
|
|
elif [[ -z "${REPO_ROOT}" ]]; then
|
|
echo "Warning: unable to resolve git repository root; skipping clean tree check." >&2
|
|
fi
|
|
|
|
# Get the toolbox name from the directory name (or you can pass it as an argument)
|
|
TOOLBOX_NAME="${TOOLBOX_NAME_OVERRIDE:-$(basename "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")}"
|
|
IMAGE_NAME="tsysdevstack-toolboxstack-${TOOLBOX_NAME#toolbox-}"
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
USER_ID="${USER_ID_OVERRIDE:-$(id -u)}"
|
|
GROUP_ID="${GROUP_ID_OVERRIDE:-$(id -g)}"
|
|
USERNAME="${USERNAME_OVERRIDE:-toolbox}"
|
|
TEA_VERSION="${TEA_VERSION_OVERRIDE:-0.11.1}"
|
|
BUILDER_NAME="${BUILDER_NAME:-tsysdevstack-toolboxstack-builder}"
|
|
CACHE_DIR="${SCRIPT_DIR}/.build-cache"
|
|
TAG="${TAG_OVERRIDE:-dev}"
|
|
RELEASE_TAG="${RELEASE_TAG_OVERRIDE:-release-current}"
|
|
VERSION_TAG="${VERSION_TAG_OVERRIDE:-}"
|
|
if [[ -n "$VERSION_TAG" ]]; then
|
|
VERSION_TAG="$SEMVER"
|
|
fi
|
|
PUSH="${PUSH_OVERRIDE:-false}"
|
|
|
|
echo "Preparing release for ${SEMVER}"
|
|
echo " dry-run: ${DRY_RUN}"
|
|
echo " allow-dirty: ${ALLOW_DIRTY}"
|
|
|
|
if [[ "${DRY_RUN}" == "true" ]]; then
|
|
echo "[dry-run] Would build ${IMAGE_NAME}:${TAG}"
|
|
TAG_OVERRIDE="${TAG}" PUSH_OVERRIDE=false "${SCRIPT_DIR}/build.sh"
|
|
echo "[dry-run] Skipped pushing tags."
|
|
else
|
|
echo "Building ${IMAGE_NAME}:${TAG}"
|
|
TAG_OVERRIDE="${TAG}" PUSH_OVERRIDE=true RELEASE_TAG_OVERRIDE="${RELEASE_TAG}" VERSION_TAG_OVERRIDE="${SEMVER}" "${SCRIPT_DIR}/build.sh"
|
|
echo "Release ${SEMVER} pushed as:"
|
|
echo " - ${IMAGE_NAME}:dev"
|
|
echo " - ${IMAGE_NAME}:release-current"
|
|
echo " - ${IMAGE_NAME}:${SEMVER}"
|
|
fi |