112 lines
2.7 KiB
Bash
Executable File
112 lines
2.7 KiB
Bash
Executable File
#!/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 "[+] 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
|