#!/bin/bash # ============================================ # 丹阳公益婚恋服务平台 — CI/CD 触发脚本 # ============================================ # 由 GitHub Actions 调用,执行以下步骤: # 1. 构建 Backend Docker 镜像 # 2. 构建 Admin Web Docker 镜像 # 3. 推送镜像到 Docker Hub / 私有仓库 # 4. 触发远程部署 # ============================================ set -euo pipefail IMAGE_REPO="${DOCKER_REGISTRY:-registry.cn-hangzhou.aliyuncs.com/danyang-match}" VERSION="${GITHUB_SHA:-latest}" BRANCH="${GITHUB_REF_NAME:-main}" echo "============================================" echo " 丹阳公益婚恋平台 — CI 构建" echo " 分支: ${BRANCH} | 版本: ${VERSION}" echo "============================================" # 构建 Backend 镜像 echo "[1/3] 构建 Backend 镜像..." docker build -t "${IMAGE_REPO}/backend:${VERSION}" -f backend/Dockerfile backend/ docker tag "${IMAGE_REPO}/backend:${VERSION}" "${IMAGE_REPO}/backend:latest" # 构建 Admin Web 镜像 echo "[2/3] 构建 Admin Web 镜像..." docker build -t "${IMAGE_REPO}/admin:${VERSION}" -f admin-web/Dockerfile admin-web/ docker tag "${IMAGE_REPO}/admin:${VERSION}" "${IMAGE_REPO}/admin:latest" # 推送镜像 if [ "${BRANCH}" = "main" ] || [ "${BRANCH}" = "master" ]; then echo "[3/3] 推送镜像到仓库..." docker push "${IMAGE_REPO}/backend:${VERSION}" docker push "${IMAGE_REPO}/backend:latest" docker push "${IMAGE_REPO}/admin:${VERSION}" docker push "${IMAGE_REPO}/admin:latest" echo "✅ 镜像推送完成" else echo "⏭ 非主分支,跳过推送" fi echo "" echo "✅ CI 完成!版本: ${VERSION}"