image_builder: change manual to autobuild

This commit is contained in:
Artem Smirnov
2018-08-21 21:43:59 +03:00
parent c72b04a413
commit fcd6d41586
2 changed files with 34 additions and 63 deletions

34
image_builder/autobuild.sh Executable file
View File

@@ -0,0 +1,34 @@
#! /usr/bin/env bash
set -e
export DEBIAN_FRONTEND=${DEBIAN_FRONTEND:='noninteractive'}
export LANG=${LANG:='C.UTF-8'}
export LC_ALL=${LC_ALL:='C.UTF-8'}
export TARGET_REPO=${TARGET_REPO:='https://github.com/urpylka/clever.git'}
export TARGET_REF=${TARGET_REF:='qemu_test_2'}
export TARGET_CONFIG=${TARGET_CONFIG:='/image_builder/scripts/builder.json'}
# TODO: The repository can be already downloaded, use the TARGET_REPO also as unix path.
REPO_DIR=$(mktemp -d --suffix=.builder_repo)
git clone ${TARGET_REPO} --single-branch --branch ${TARGET_REF} --depth 1 ${REPO_DIR} \
|| (echo 'Error: Could not clone repo!'; return 1)
[[ -f ${REPO_DIR}${TARGET_CONFIG} ]] && export TARGET_CONFIG=${REPO_DIR}${TARGET_CONFIG} \
|| (echo "Error: TARGET_CONFIG doesn't exist!"; return 1)
export IMAGE_VERSION="${TARGET_REF}_$(date '+%Y%m%d_%H%M%S')"
export IMAGE_PATH="$(pwd)/image/$(basename -s ".git" ${TARGET_REPO})_${IMAGE_VERSION}.img"
./image_config.sh get_image ${IMAGE_PATH} $(jq '.source_image' -r ${TARGET_CONFIG})
if [[ $(arch) != 'armv7l' ]]; then
[[ -d '/proc/sys/fs/binfmt_misc' ]] || mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-static:' > /proc/sys/fs/binfmt_misc/register
./image_config.sh copy_to_chroot ${IMAGE_PATH} './qemu-arm-resin' '/usr/bin/qemu-arm-static'
fi
export IMAGE_BUILDER="$(dirname $(readlink -e "$0"))"
export SCRIPTS_DIR="$(jq '.scripts_dir' -r ${TARGET_CONFIG})"
$(jq '.main_script' -r ${TARGET_CONFIG})

View File

@@ -1,63 +0,0 @@
#! /bin/bash
DEBIAN_FRONTEND=${DEBIAN_FRONTEND:='noninteractive'}
LANG=${LANG:='C.UTF-8'}
LC_ALL=${LC_ALL:='C.UTF-8'}
TARGET_REPO_URL=${TARGET_REPO_URL:='https://github.com/urpylka/clever.git'}
TARGET_REPO_REF=${TARGET_REPO_REF:='qemu_test_2'}
TARGET_REPO_PATH=${TARGET_REPO_PATH:='/image_builder'}
IMAGE_NAME=${IMAGE_NAME:='clever_docker.img'}
CLEVER_VERSION=${CLEVER_VERSION:='NO_VERSION'}
SOURCE_IMAGE=${SOURCE_IMAGE:='https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2017-12-01/2017-11-29-raspbian-stretch-lite.zip'}
NUMBER_THREADS=${NUMBER_THREADS:=4}
DISCOVER_ROS_PACKAGES=${DISCOVER_ROS_PACKAGES:=False}
SHRINK=${SHRINK:=True}
set -e
apt-get update -qq > /dev/null
apt-get install -y --no-install-recommends -qq unzip wget parted apt-utils git ca-certificates > /dev/null
REPO_DIR=$(mktemp -d)
git clone ${TARGET_REPO_URL} --single-branch --branch ${TARGET_REPO_REF} --depth 1 ${REPO_DIR}
[[ $? != 0 ]] && (echo 'Error: Could not clone repo!'; return 1)
[[ -d ${REPO_DIR}${TARGET_REPO_PATH} ]] || (echo 'Error: TARGET_REPO_PATH was incorrect!'; return 1)
IMAGE_PATH=$(pwd)/image/${IMAGE_NAME}
SCRIPTS_DIR=${REPO_DIR}${TARGET_REPO_PATH}'/scripts/'
./image_config.sh get_image ${IMAGE_PATH} ${SOURCE_IMAGE}
./image_config.sh resize_fs ${IMAGE_PATH} '7G'
if [[ $(arch) != 'armv7l' ]]; then
if ! [[ -d '/proc/sys/fs/binfmt_misc' ]]; then
mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-static:' > /proc/sys/fs/binfmt_misc/register
fi
fi
./image_config.sh copy_to_chroot ${IMAGE_PATH} './qemu-arm-resin' '/usr/bin/qemu-arm-static'
./image_config.sh copy_to_chroot ${IMAGE_PATH} ${SCRIPTS_DIR}'init_rpi.sh' '/root/'
./image_config.sh copy_to_chroot ${IMAGE_PATH} ${SCRIPTS_DIR}'hardware_setup.sh' '/root/'
./image_config.sh execute ${IMAGE_PATH} ${SCRIPTS_DIR}'init_image.sh' ${CLEVER_VERSION} ${SOURCE_IMAGE}
./image_config.sh execute ${IMAGE_PATH} ${SCRIPTS_DIR}'software_install.sh'
./image_config.sh execute ${IMAGE_PATH} ${SCRIPTS_DIR}'network_setup.sh'
#./image_config.sh copy_to_chroot ${IMAGE_PATH} ${SCRIPTS_DIR}'kinetic-ros-coex.rosinstall' '/home/pi/ros_catkin_ws/'
#
# Не совсем корректно тк такого параметра быть не должно,
# вообще здесь не должно быть ветки как параметра, она должна задаваться непосредственно в файл ros_install
#
./image_config.sh execute ${IMAGE_PATH} ${SCRIPTS_DIR}'ros_install.sh' ${TARGET_REPO_URL} ${TARGET_REPO_REF} ${DISCOVER_ROS_PACKAGES}
if SHRINK; then
./autosizer.sh ${IMAGE_PATH}
# Наверное вставить в autosizer, тк отдельно (внутри образа) это все равно никто не будет запускать
# и не нужно его запускать через execute
./image_config.sh execute ${IMAGE_PATH} ${SCRIPTS_DIR}'change_boot_part.sh'
fi