update
This commit is contained in:
121
script/ci.sh
Normal file
121
script/ci.sh
Normal file
@@ -0,0 +1,121 @@
|
||||
#!/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:-blog}"
|
||||
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: blog)"
|
||||
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" in
|
||||
build)
|
||||
build_image
|
||||
exit $?
|
||||
;;
|
||||
push)
|
||||
push_image
|
||||
exit $?
|
||||
;;
|
||||
help|--help|-h|"")
|
||||
print_help
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $1"
|
||||
echo ""
|
||||
print_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user