deployment_files

This commit is contained in:
2026-09-16 18:41:57 +00:00
parent d4c9a204a8
commit a1cef9aecc
10 changed files with 967 additions and 107 deletions
+227
View File
@@ -0,0 +1,227 @@
undefined#!/bin/bash
set -Eeuo pipefail
SECONDS=0
########################################
# Error Handling
########################################
trap 'echo "ERROR: Script failed at line ${LINENO}. Command: ${BASH_COMMAND}" >&2' ERR
########################################
# Project Identity
# NOTE: Fill these in per-project. Do not
# hardcode values here that other projects
# also use, to avoid collisions.
########################################
PRJ_NAME="mytest16sep-frontend-f"
IMAGE_PROJECT_NAME="${PRJ_NAME}"
########################################
# Gitea Source Repository
########################################
GITEA_USER="risadmin_prod"
GITEA_PASS="adminprod1234"
GITEA_URL="http://157.66.191.31:3000"
GITEA_URL="${GITEA_URL#http://}"
GITEA_ORG="risadmin_prod"
GITEA_EMAIL="ganeshk@dekatc.com"
REPO_NAME="mytest16sep"
GIT_BRANCH=main
########################################
# Module Paths (per project, inside -b / -f dirs)
########################################
JAR_NAME=app-1.0.0.jar
BACKEND_SUBPATH="<BACKEND_SUBPATH>" # e.g. authsec_springboot/backend
FRONTEND_SUBPATH="<FRONTEND_SUBPATH>" # e.g. authsec_flutter_new/frontend/flutter_new
APK_NAME=app-release.apk
########################################
# Docker Registry
########################################
DOCKER_USER=risadmin_prod
DOCKER_PASS=adminprod1234
DOCKER_URL=157.66.191.31:3000
DOCKER_TAG=1.0
########################################
# Build Path
########################################
PATH_DIR="/data/66065_1789584033113/sureops"
########################################
# Image Names
########################################
IMAGE_NAME="${DOCKER_URL}/${DOCKER_USER}/${IMAGE_PROJECT_NAME}:${DOCKER_TAG}"
LATEST_IMAGE="${DOCKER_URL}/${DOCKER_USER}/${IMAGE_PROJECT_NAME}:latest"
########################################
# Display Configuration
########################################
echo "=========================================="
echo " SINGLE CONTAINER BUILD (Flutter + SpringBoot + MySQL)"
echo "=========================================="
echo "Project Name : ${PRJ_NAME}"
echo "Container Name : ${IMAGE_PROJECT_NAME}"
echo "Repository : ${GITEA_ORG}/${REPO_NAME}"
echo "Branch : ${GIT_BRANCH}"
echo "Docker Image : ${IMAGE_NAME}"
echo "Latest Image : ${LATEST_IMAGE}"
echo "Build Path : ${PATH_DIR}"
echo "=========================================="
########################################
# Validate Configuration
########################################
echo "Validating configuration..."
REQUIRED_VARIABLES=(
"PRJ_NAME"
"GITEA_USER"
"GITEA_PASS"
"GITEA_URL"
"GITEA_ORG"
"REPO_NAME"
"GIT_BRANCH"
"JAR_NAME"
"BACKEND_SUBPATH"
"FRONTEND_SUBPATH"
"DOCKER_USER"
"DOCKER_PASS"
"DOCKER_URL"
"DOCKER_TAG"
"PATH_DIR"
)
for VARIABLE in "${REQUIRED_VARIABLES[@]}"; do
VALUE="${!VARIABLE:-}"
if [[ -z "${VALUE}" ]]; then
echo "ERROR: Required variable '${VARIABLE}' is empty."
exit 1
fi
if [[ "${VALUE}" == "<"*">" ]]; then
echo "ERROR: Variable '${VARIABLE}' still contains placeholder value: ${VALUE}"
exit 1
fi
done
echo "Configuration validation successful."
########################################
# Check Docker
########################################
if ! command -v docker >/dev/null 2>&1; then
echo "ERROR: Docker is not installed or not available in PATH."
exit 1
fi
if ! docker info >/dev/null 2>&1; then
echo "ERROR: Docker daemon is not running or current user has no permission."
exit 1
fi
########################################
# Change Directory
########################################
if [[ ! -d "${PATH_DIR}" ]]; then
echo "ERROR: Directory not found: ${PATH_DIR}"
exit 1
fi
cd "${PATH_DIR}"
########################################
# Build Docker Image
########################################
echo "=========================================="
echo " BUILDING DOCKER IMAGE"
echo "=========================================="
docker build \
--no-cache \
--build-arg "GITEA_USER=${GITEA_USER}" \
--build-arg "GITEA_PASS=${GITEA_PASS}" \
--build-arg "GITEA_URL=${GITEA_URL}" \
--build-arg "GITEA_ORG=${GITEA_ORG}" \
--build-arg "REPO_NAME=${REPO_NAME}" \
--build-arg "GIT_BRANCH=${GIT_BRANCH}" \
--build-arg "JAR_NAME=${JAR_NAME}" \
--build-arg "BACKEND_SUBPATH=${BACKEND_SUBPATH}" \
--build-arg "FRONTEND_SUBPATH=${FRONTEND_SUBPATH}" \
--build-arg "APK_NAME=${APK_NAME}" \
-t "${IMAGE_NAME}" \
.
echo "Docker build successful."
########################################
# Verify Image
########################################
if ! docker image inspect "${IMAGE_NAME}" >/dev/null 2>&1; then
echo "ERROR: Docker image was not created: ${IMAGE_NAME}"
exit 1
fi
docker images "${IMAGE_NAME}"
########################################
# Docker Registry Login + Push
########################################
if ! echo "${DOCKER_PASS}" | docker login \
--username "${DOCKER_USER}" \
--password-stdin \
"${DOCKER_URL}"; then
echo "ERROR: Docker registry login failed."
exit 1
fi
docker tag "${IMAGE_NAME}" "${LATEST_IMAGE}"
docker push "${IMAGE_NAME}"
docker push "${LATEST_IMAGE}"
docker logout "${DOCKER_URL}" || true
########################################
# Deployment Note
#
# DO NOT RUN CONTAINER HERE.
# Deployment service will perform:
# docker pull / docker stop / docker rm / docker run
########################################
echo "=========================================="
echo " BUILD AND PUSH COMPLETED"
echo "=========================================="
echo "Project Name : ${PRJ_NAME}"
echo "Image : ${IMAGE_NAME}"
echo "Latest Image : ${LATEST_IMAGE}"
DURATION="${SECONDS}"
echo "Total time taken: $((DURATION / 60)) min $((DURATION % 60)) sec"
exit 0