woj-server/build_image.sh

94 lines
2.4 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_build() {
tag_name="$IMAGE_PREFIX/$1"
docker_file="$2"
shift 2
$DOCKER build -t "$tag_name" -f "$docker_file" --build-arg "IMAGE_PREFIX=$IMAGE_PREFIX" "$@" . ||
{ log_error "[!] Failed to build $tag_name"; exit 1; }
}
function docker_push() {
full_name="$IMAGE_PREFIX/$1"
$DOCKER push "$full_name" ||
{ log_error "[!] Failed to push $full_name"; exit 1; }
}
function build_base() {
log_info "[+] Building Base Images"
pushd resource/runner || exit 1
docker_build "ubuntu-full:latest" "scripts/ubuntu-full.Dockerfile"
docker_build "ubuntu-run:latest" "scripts/ubuntu-run.Dockerfile"
popd || exit 1
}
function push_base() {
log_info "[+] Pushing Base Images"
docker_push "ubuntu-full:latest"
docker_push "ubuntu-run:latest"
}
function build_server() {
log_info "[+] Building Server"
docker_build "woj-server:latest" "Server.Dockerfile"
}
function build_runner() {
log_info "[+] Building Runner"
if [[ "$DOCKER" == "docker" ]]; then
# docker do not support --cap-add during build time
docker_build "woj-runner:latest" "Runner.Dockerfile" --allow security.insecure
else
# podman
docker_build "woj-runner:latest" "Runner.Dockerfile" --cap-add=sys_admin --security-opt label=disable
fi
}
function push_server() {
log_info "[+] Pushing Server Images"
docker_push "woj-server:latest"
$DOCKER tag "$IMAGE_PREFIX/woj-server:latest" "$IMAGE_PREFIX/woj-server:$VERSION"
docker_push "woj-server:$VERSION"
}
function push_runner() {
log_info "[+] Pushing Runner Images"
docker_push "woj-runner:latest"
$DOCKER tag "$IMAGE_PREFIX/woj-runner:latest" "$IMAGE_PREFIX/woj-runner:$VERSION"
docker_push "woj-runner:$VERSION"
}
if [ "$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_base
push_base
build_server
push_server
build_runner
push_runner
exit 0
else
log_error "Usage: $0 [base|server|runner|all]"
exit 1
fi