#!/usr/bin/env bash . resource/runner/scripts/common.sh # Version VERSION="$(cat VERSION)" log_info "VERSION: $VERSION" # Image Prefix IMAGE_PREFIX=${IMAGE_PREFIX:-"git.0x7f.app/woj"} function docker_pull() { tag_name="$IMAGE_PREFIX/$1:$VERSION" shift 1 $DOCKER pull "$tag_name" "$@" || log_warn "[!] Failed to pull $tag_name" } function docker_build() { tag_name="$IMAGE_PREFIX/$1:$VERSION" docker_file="$2" shift 2 $DOCKER build -t "$tag_name" -f "$docker_file" --build-arg "IMAGE_PREFIX=$IMAGE_PREFIX" --build-arg "VERSION=$VERSION" "$@" . || { log_error "[!] Failed to build $tag_name"; exit 1; } } function docker_push() { tag_name="$IMAGE_PREFIX/$1" $DOCKER push "$tag_name" || { log_error "[!] Failed to push $tag_name"; exit 1; } } function build_rootfs() { log_info "[+] Building Rootfs Images" pushd resource/runner || exit 1 docker_build "debian-full" "scripts/debian-full.Dockerfile" docker_build "debian-run" "scripts/debian-run.Dockerfile" popd || exit 1 } function push_rootfs() { log_info "[+] Pushing Rootfs Images" docker_push "debian-full:$VERSION" docker_push "debian-run:$VERSION" } function build_base() { log_info "[+] Building Base" docker_build "woj-server-base" "Base.Dockerfile" } function build_server() { log_info "[+] Pulling woj-ui" docker_pull "woj-ui" log_info "[+] Building Server" docker_build "woj-server" "Server.Dockerfile" } function build_runner() { log_info "[+] Building Runner" docker_build "woj-runner" "Runner.Dockerfile" } function push_base() { log_info "[+] Pushing Base Images" docker_push "woj-server-base:$VERSION" $DOCKER tag "$IMAGE_PREFIX/woj-server-base:$VERSION" "$IMAGE_PREFIX/woj-server-base:latest" docker_push "woj-server-base:latest" } function push_server() { log_info "[+] Pushing Server Images" docker_push "woj-server:$VERSION" $DOCKER tag "$IMAGE_PREFIX/woj-server:$VERSION" "$IMAGE_PREFIX/woj-server:latest" docker_push "woj-server:latest" } function push_runner() { log_info "[+] Pushing Runner Images" docker_push "woj-runner:$VERSION" $DOCKER tag "$IMAGE_PREFIX/woj-runner:$VERSION" "$IMAGE_PREFIX/woj-runner:latest" docker_push "woj-runner:latest" } if [ "$1" == "rootfs" ]; then build_rootfs push_rootfs exit 0 elif [ "$1" == "base" ]; then build_base push_base exit 0 elif [ "$1" == "server" ]; then build_server push_server exit 0 elif [ "$1" == "runner" ]; then build_runner push_runner exit 0 elif [ "$1" == "all" ]; then build_rootfs push_rootfs build_base push_base build_server push_server build_runner push_runner exit 0 else log_error "Usage: $0 [rootfs|base|server|runner|all]" exit 1 fi