Files
sub2apipay/scripts/publish.sh
erio c226b1188d feat: 版本管理 — VERSION 文件 + 构建发布脚本
- VERSION 文件:版本号单一来源(当前 1.0.0)
- docker-compose.hub.yml / app.yml:镜像 tag 改为 \${IMAGE_TAG:-latest}
- scripts/publish.sh:自动读取 VERSION、打双标签(x.y.z + latest)、推送到 Docker Hub
2026-03-01 21:05:51 +08:00

57 lines
1.4 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# scripts/publish.sh
# 构建并发布 Docker 镜像到 Docker Hub
# 在构建服务器us-asaki-root上运行
#
# 用法:
# ./scripts/publish.sh # 读取 VERSION 文件中的版本号
# ./scripts/publish.sh 1.2.3 # 手动指定版本号
set -euo pipefail
REGISTRY="touwaeriol/sub2apipay"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
# 读取版本号
if [[ $# -ge 1 ]]; then
VERSION="$1"
else
VERSION="$(cat "$ROOT_DIR/VERSION" | tr -d '[:space:]')"
fi
if [[ -z "$VERSION" ]]; then
echo "错误VERSION 文件为空,请填写版本号(如 1.0.0" >&2
exit 1
fi
echo "=============================="
echo " 构建版本: $VERSION"
echo " 镜像: $REGISTRY"
echo "=============================="
cd "$ROOT_DIR"
# 构建
echo "[1/3] 构建镜像..."
docker compose build
# 打标签:具体版本 + latest
echo "[2/3] 打标签: $VERSION 和 latest..."
docker tag sub2apipay-app:latest "$REGISTRY:$VERSION"
docker tag sub2apipay-app:latest "$REGISTRY:latest"
# 推送
echo "[3/3] 推送到 Docker Hub..."
docker push "$REGISTRY:$VERSION"
docker push "$REGISTRY:latest"
echo ""
echo "✓ 发布完成"
echo " $REGISTRY:$VERSION"
echo " $REGISTRY:latest"
echo ""
echo "部署命令:"
echo " IMAGE_TAG=$VERSION docker compose -f docker-compose.hub.yml pull"
echo " IMAGE_TAG=$VERSION docker compose -f docker-compose.hub.yml up -d"