Add CI/CD workflows and Kubernetes configurations for deployment
Some checks failed
CI - Build and Push / Build and Push Docker Image (push) Failing after 11s

This commit is contained in:
2025-10-07 10:45:44 +08:00
parent 0a60a84ab8
commit 38ca0cf0e9
9 changed files with 559 additions and 0 deletions

112
script/ci.sh Normal file
View File

@@ -0,0 +1,112 @@
#!/bin/bash
# CI/CD Script for Docker Build and Push
# This script builds a Docker image and pushes it to a private container registry
# =============================================================================
# Environment Variables (with default values)
# =============================================================================
CONTAINER_REGISTRY_URL="${CONTAINER_REGISTRY_URL:-127.0.0.1}"
CONTAINER_REGISTRY_USERNAME="${CONTAINER_REGISTRY_USERNAME:-username}"
CONTAINER_REGISTRY_NAMESPACE="${CONTAINER_REGISTRY_NAMESPACE:-username}"
CONTAINER_REGISTRY_PASSWORD="${CONTAINER_REGISTRY_PASSWORD:-password}"
CONTAINER_IMAGE_NAME="${CONTAINER_IMAGE_NAME:-authenticator}"
CONTAINER_IMAGE_TAG="${CONTAINER_IMAGE_TAG:-latest}"
# =============================================================================
# Functions
# =============================================================================
# Print help message
print_help() {
echo "Usage: $0 [OPTIONS]"
echo ""
echo "Options:"
echo " build Build Docker image"
echo " push Push Docker image to registry"
echo " help Show this help message (default)"
echo ""
echo "Environment Variables:"
echo " CONTAINER_REGISTRY_URL Registry URL (default: 127.0.0.1)"
echo " CONTAINER_REGISTRY_USERNAME Registry username (default: username)"
echo " CONTAINER_REGISTRY_NAMESPACE Registry namespace (default: username)"
echo " CONTAINER_REGISTRY_PASSWORD Registry password (default: password)"
echo " CONTAINER_IMAGE_NAME Image name (default: authenticator)"
echo " CONTAINER_IMAGE_TAG Image tag (default: latest)"
}
# Build Docker image
build_image() {
FULL_IMAGE_NAME="${CONTAINER_REGISTRY_URL}/${CONTAINER_REGISTRY_NAMESPACE}/${CONTAINER_IMAGE_NAME}:${CONTAINER_IMAGE_TAG}"
echo "=========================================="
echo "Building Docker Image"
echo "=========================================="
echo "Image: ${FULL_IMAGE_NAME}"
echo ""
docker build -t "${FULL_IMAGE_NAME}" .
if [ $? -eq 0 ]; then
echo ""
echo "✓ Build successful: ${FULL_IMAGE_NAME}"
return 0
else
echo ""
echo "✗ Build failed"
return 1
fi
}
# Push Docker image to registry
push_image() {
FULL_IMAGE_NAME="${CONTAINER_REGISTRY_URL}/${CONTAINER_REGISTRY_NAMESPACE}/${CONTAINER_IMAGE_NAME}:${CONTAINER_IMAGE_TAG}"
echo "=========================================="
echo "Pushing Docker Image"
echo "=========================================="
echo "Registry: ${CONTAINER_REGISTRY_URL}"
echo "Image: ${FULL_IMAGE_NAME}"
echo ""
# Login to registry
echo "${CONTAINER_REGISTRY_PASSWORD}" | docker login "${CONTAINER_REGISTRY_URL}" \
--username "${CONTAINER_REGISTRY_USERNAME}" \
--password-stdin
if [ $? -ne 0 ]; then
echo "✗ Registry login failed"
return 1
fi
# Push image
docker push "${FULL_IMAGE_NAME}"
if [ $? -eq 0 ]; then
echo ""
echo "✓ Push successful: ${FULL_IMAGE_NAME}"
docker logout "${CONTAINER_REGISTRY_URL}"
return 0
else
echo ""
echo "✗ Push failed"
docker logout "${CONTAINER_REGISTRY_URL}"
return 1
fi
}
# =============================================================================
# Main Script
# =============================================================================
case "${1:-help}" in
build)
build_image
;;
push)
push_image
;;
help|*)
print_help
;;
esac