12ca05299d
A makefile was used only for creation and clean up of the docker image for building. In this process, all the environment variables were sourced and included into the Makefile. However this can fail on systems that has functions and cause a failing makefile. Trying to fixing this issue I realize that this Makefile ain't needed, as all the logic for docker management is under `tb.sh`, therefore makes sense to remove this Makefile and use this script for the entire process. Story: 2002560 Change-Id: I2795593521a5d16dc2033861946fd09c2270424e Signed-off-by: Erich Cordoba <erich.cordoba.malibran@intel.com>
117 lines
2.9 KiB
Bash
Executable File
117 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# tb.sh - tbuilder commands
|
|
#
|
|
# Subcommands:
|
|
# env - Display a selection of configuration values
|
|
# exec - Starts a shell inside a running container
|
|
# run - Starts a container
|
|
# stop - Stops a running container
|
|
#
|
|
# Configuration
|
|
# tb.sh expects to find its configuration file buildrc in the current
|
|
# directory, like Vagrant looks for Vagrantfile.
|
|
|
|
SCRIPT_DIR=$(cd $(dirname "$0") && pwd)
|
|
WORK_DIR=$(pwd)
|
|
|
|
# Load tbuilder configuration
|
|
if [[ -r ${WORK_DIR}/buildrc ]]; then
|
|
source ${WORK_DIR}/buildrc
|
|
fi
|
|
|
|
CMD=$1
|
|
|
|
TC_CONTAINER_NAME=${MYUNAME}-centos-builder
|
|
TC_CONTAINER_TAG=local/${MYUNAME}-stx-builder:7.4
|
|
TC_DOCKERFILE=Dockerfile
|
|
|
|
function create_container {
|
|
docker build \
|
|
--build-arg MYUID=$(id -u) \
|
|
--build-arg MYUNAME=${USER} \
|
|
--ulimit core=0 \
|
|
--network host \
|
|
-t ${TC_CONTAINER_TAG} \
|
|
-f ${TC_DOCKERFILE} \
|
|
.
|
|
}
|
|
|
|
function exec_container {
|
|
docker cp ${WORK_DIR}/buildrc ${TC_CONTAINER_NAME}:/home/${MYUNAME}
|
|
docker cp ${WORK_DIR}/localrc ${TC_CONTAINER_NAME}:/home/${MYUNAME}
|
|
docker exec -it --user=${MYUNAME} -e MYUNAME=${MYUNAME} ${TC_CONTAINER_NAME} script -q -c "/bin/bash" /dev/null
|
|
}
|
|
|
|
function run_container {
|
|
# create localdisk
|
|
mkdir -p ${LOCALDISK}/designer/${MYUNAME}/${PROJECT}
|
|
|
|
docker run -it --rm \
|
|
--name ${TC_CONTAINER_NAME} \
|
|
--detach \
|
|
-v ${LOCALDISK}:/${GUEST_LOCALDISK} \
|
|
-v ${HOST_MIRROR_DIR}:/import/mirrors:ro \
|
|
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
|
-v ~/.ssh:/mySSH:ro \
|
|
-e "container=docker" \
|
|
-e MYUNAME=${MYUNAME} \
|
|
--privileged=true \
|
|
--security-opt seccomp=unconfined \
|
|
${TC_CONTAINER_TAG}
|
|
}
|
|
|
|
function stop_container {
|
|
docker stop ${TC_CONTAINER_NAME}
|
|
}
|
|
|
|
function kill_container {
|
|
docker kill ${TC_CONTAINER_NAME}
|
|
}
|
|
|
|
function clean_container {
|
|
docker rm ${TC_CONTAINER_NAME} || true
|
|
docker image rm ${TC_CONTAINER_TAG}
|
|
}
|
|
|
|
function usage {
|
|
echo "$0 [create|run|exec|env|stop|kill|clean]"
|
|
}
|
|
|
|
case $CMD in
|
|
env)
|
|
echo "LOCALDISK=${LOCALDISK}"
|
|
echo "GUEST_LOCALDISK=${GUEST_LOCALDISK}"
|
|
echo "TC_DOCKERFILE=${TC_DOCKERFILE}"
|
|
echo "TC_CONTAINER_NAME=${TC_CONTAINER_NAME}"
|
|
echo "TC_CONTAINER_TAG=${TC_CONTAINER_TAG}"
|
|
echo "SOURCE_REMOTE_NAME=${SOURCE_REMOTE_NAME}"
|
|
echo "SOURCE_REMOTE_URI=${SOURCE_REMOTE_URI}"
|
|
echo "HOST_MIRROR_DIR=${HOST_MIRROR_DIR}"
|
|
echo "MY_TC_RELEASE=${MY_TC_RELEASE}"
|
|
echo "MY_REPO_ROOT_DIR=${MY_REPO_ROOT_DIR}"
|
|
;;
|
|
create)
|
|
create_container
|
|
;;
|
|
exec)
|
|
exec_container
|
|
;;
|
|
run)
|
|
run_container
|
|
;;
|
|
stop)
|
|
stop_container
|
|
;;
|
|
kill)
|
|
kill_container
|
|
;;
|
|
clean)
|
|
clean_container
|
|
;;
|
|
*)
|
|
echo "Unknown command: $CMD"
|
|
usage
|
|
exit 1
|
|
;;
|
|
esac
|