Files
smartmate/deploy/stage-release.sh
2026-05-09 17:51:04 +08:00

55 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
release_dir=""
plan_file=""
bundle_dir=".docker-bundles"
while [[ $# -gt 0 ]]; do
case "$1" in
--release-dir)
release_dir="$2"
shift 2
;;
--plan-file)
plan_file="$2"
shift 2
;;
--bundle-dir)
bundle_dir="$2"
shift 2
;;
*)
echo "unknown argument: $1" >&2
exit 64
;;
esac
done
if [[ -z "${release_dir}" || -z "${plan_file}" ]]; then
echo "usage: stage-release.sh --release-dir <dir> --plan-file <file> [--bundle-dir <dir>]" >&2
exit 64
fi
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
release_abs="${repo_root}/${release_dir}"
bundle_abs="${repo_root}/${bundle_dir}"
rm -rf "${release_abs}"
mkdir -p "${release_abs}/deploy/nginx" "${release_abs}/deploy/certs" "${release_abs}/.docker-bundles"
cp "${repo_root}/docker-compose.full.yml" "${release_abs}/docker-compose.full.yml"
cp "${repo_root}/deploy/docker-load.sh" "${release_abs}/deploy/docker-load.sh"
cp "${repo_root}/deploy/project-release.sh" "${release_abs}/deploy/project-release.sh"
cp "${repo_root}/deploy/project-rollback.sh" "${release_abs}/deploy/project-rollback.sh"
cp "${repo_root}/deploy/impact-rules.sh" "${release_abs}/deploy/impact-rules.sh"
cp "${repo_root}/deploy/service-catalog.sh" "${release_abs}/deploy/service-catalog.sh"
cp "${repo_root}/deploy/service-catalog.txt" "${release_abs}/deploy/service-catalog.txt"
cp "${repo_root}/deploy/nginx/default.conf" "${release_abs}/deploy/nginx/default.conf"
cp "${repo_root}/deploy/certs/README.md" "${release_abs}/deploy/certs/README.md"
cp "${plan_file}" "${release_abs}/deploy/release-plan.env"
if compgen -G "${bundle_abs}/*.tar" >/dev/null 2>&1; then
cp "${bundle_abs}"/*.tar "${release_abs}/.docker-bundles/"
fi