Implement fully automated Jenkins HW8 setup with Ansible, JCasC and JJB
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
REGISTRY="${1:-localhost:5005}"
|
||||
TAG="${2:-1.0.0}"
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
RETRIES="${RETRIES:-6}"
|
||||
RETRY_DELAY_SEC="${RETRY_DELAY_SEC:-15}"
|
||||
|
||||
retry_cmd() {
|
||||
local attempt=1
|
||||
local max_attempts="$1"
|
||||
shift
|
||||
|
||||
until "$@"; do
|
||||
if [ "${attempt}" -ge "${max_attempts}" ]; then
|
||||
echo "Command failed after ${attempt} attempts: $*"
|
||||
return 1
|
||||
fi
|
||||
echo "Attempt ${attempt}/${max_attempts} failed: $*"
|
||||
attempt=$((attempt + 1))
|
||||
sleep "${RETRY_DELAY_SEC}"
|
||||
done
|
||||
}
|
||||
|
||||
prepull_base_images() {
|
||||
local images=(
|
||||
"eclipse-temurin:21-jre"
|
||||
"maven:3.9.11-eclipse-temurin-21"
|
||||
"python:3.12-slim"
|
||||
)
|
||||
for image in "${images[@]}"; do
|
||||
echo "Pulling base image ${image}"
|
||||
retry_cmd "${RETRIES}" docker pull "${image}"
|
||||
done
|
||||
}
|
||||
|
||||
build_and_push() {
|
||||
local image_name="$1"
|
||||
local context_dir="$2"
|
||||
local full_image="${REGISTRY}/${image_name}:${TAG}"
|
||||
echo "Building ${full_image}"
|
||||
retry_cmd "${RETRIES}" docker build -t "${full_image}" "${context_dir}"
|
||||
echo "Pushing ${full_image}"
|
||||
retry_cmd "${RETRIES}" docker push "${full_image}"
|
||||
}
|
||||
|
||||
prepull_base_images
|
||||
build_and_push "otus/slave-maven" "${ROOT_DIR}/images/slave-maven"
|
||||
build_and_push "otus/slave-jjb" "${ROOT_DIR}/images/slave-jjb"
|
||||
build_and_push "otus/test-selenium" "${ROOT_DIR}/images/test-selenium"
|
||||
build_and_push "otus/test-api" "${ROOT_DIR}/images/test-api"
|
||||
build_and_push "otus/test-mobile" "${ROOT_DIR}/images/test-mobile"
|
||||
Reference in New Issue
Block a user