image_builder: remove MOUNT_POINT

I changed CONST-PATH to dynamic dir by mktemp
This commit is contained in:
Artem Smirnov
2018-07-24 19:05:04 +03:00
parent 199104ca83
commit 124950d7e4
2 changed files with 81 additions and 97 deletions

View File

@@ -6,7 +6,6 @@ pipeline {
string(name: 'IMAGE_VERSION', defaultValue: 'no_version', description: 'Image version')
string(name: 'BUILD_DIR', defaultValue: '/mnt/hdd_builder/workspace', description: 'Build workspace')
string(name: 'MOUNT_POINT', defaultValue: '/mnt/hdd_builder/image', description: 'Mount point')
string(name: 'RPI_DONWLOAD_URL', defaultValue: 'https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2017-12-01/2017-11-29-raspbian-stretch-lite.zip')
// TODO: Add mirrorparameters
@@ -42,7 +41,7 @@ pipeline {
}
// TODO: Transfer apps.sh initialisation code here
steps {
sh "$WORKSPACE/image_builder/image_config.sh execute ${params.BUILD_DIR}/${params.IMAGE_NAME} ${params.MOUNT_POINT} $WORKSPACE/$EXECUTE_FILE ${params.IMAGE_VERSION} \$(basename ${params.RPI_DONWLOAD_URL})"
sh "$WORKSPACE/image_builder/image_config.sh execute ${params.BUILD_DIR}/${params.IMAGE_NAME} $WORKSPACE/$EXECUTE_FILE ${params.IMAGE_VERSION} \$(basename ${params.RPI_DONWLOAD_URL})"
}
}
stage('Hardware setup') {
@@ -50,7 +49,7 @@ pipeline {
EXECUTE_FILE = 'image_builder/scripts/hardware_setup.sh'
}
steps {
sh "$WORKSPACE/image_builder/image_config.sh execute ${params.BUILD_DIR}/${params.IMAGE_NAME} ${params.MOUNT_POINT} $WORKSPACE/$EXECUTE_FILE"
sh "$WORKSPACE/image_builder/image_config.sh execute ${params.BUILD_DIR}/${params.IMAGE_NAME} $WORKSPACE/$EXECUTE_FILE"
}
}
stage('Software install') {
@@ -58,7 +57,7 @@ pipeline {
EXECUTE_FILE = 'image_builder/scripts/software_install.sh'
}
steps {
sh "$WORKSPACE/image_builder/image_config.sh execute ${params.BUILD_DIR}/${params.IMAGE_NAME} ${params.MOUNT_POINT} $WORKSPACE/$EXECUTE_FILE"
sh "$WORKSPACE/image_builder/image_config.sh execute ${params.BUILD_DIR}/${params.IMAGE_NAME} $WORKSPACE/$EXECUTE_FILE"
}
}
stage('Network setup') {
@@ -66,7 +65,7 @@ pipeline {
EXECUTE_FILE = 'image_builder/scripts/network_setup.sh'
}
steps {
sh "$WORKSPACE/image_builder/image_config.sh execute ${params.BUILD_DIR}/${params.IMAGE_NAME} ${params.MOUNT_POINT} $WORKSPACE/$EXECUTE_FILE"
sh "$WORKSPACE/image_builder/image_config.sh execute ${params.BUILD_DIR}/${params.IMAGE_NAME} $WORKSPACE/$EXECUTE_FILE"
}
}
stage('Install ROS') {
@@ -75,8 +74,8 @@ pipeline {
MOVE_FILE = 'image_builder/kinetic-ros-coex.rosinstall'
}
steps {
sh "if ! ${params.DISCOVER_ROS_PACKAGES}; then $WORKSPACE/image_builder/image_config.sh copy_to_chroot ${params.BUILD_DIR}/${params.IMAGE_NAME} ${params.MOUNT_POINT} $WORKSPACE/$MOVE_FILE; fi"
sh "$WORKSPACE/image_builder/image_config.sh execute ${params.BUILD_DIR}/${params.IMAGE_NAME} ${params.MOUNT_POINT} $WORKSPACE/$EXECUTE_FILE ${params.GWBT_URL} ${params.DISCOVER_ROS_PACKAGES}"
sh "if ! ${params.DISCOVER_ROS_PACKAGES}; then $WORKSPACE/image_builder/image_config.sh copy_to_chroot ${params.BUILD_DIR}/${params.IMAGE_NAME} $WORKSPACE/$MOVE_FILE '/root'; fi"
sh "$WORKSPACE/image_builder/image_config.sh execute ${params.BUILD_DIR}/${params.IMAGE_NAME} $WORKSPACE/$EXECUTE_FILE ${params.GWBT_URL} ${params.DISCOVER_ROS_PACKAGES}"
}
}
// TODO: Add finalising step, transfer mirror removal from ros.sh
@@ -87,7 +86,7 @@ pipeline {
when { expression { return params.SHRINK } }
steps {
sh "$WORKSPACE/image_builder/autosizer.sh ${params.BUILD_DIR}/${params.IMAGE_NAME}"
sh "$WORKSPACE/image_builder/image_config.sh execute ${params.BUILD_DIR}/${params.IMAGE_NAME} ${params.MOUNT_POINT} $WORKSPACE/$EXECUTE_FILE"
sh "$WORKSPACE/image_builder/image_config.sh execute ${params.BUILD_DIR}/${params.IMAGE_NAME} $WORKSPACE/$EXECUTE_FILE"
}
}
}

View File

@@ -82,7 +82,7 @@ resize_fs() {
mount_system() {
# STATIC FUNCTION
# TEMPLATE: mount_system $IMAGE $MOUNT_POINT
# TEMPLATE: mount_system $IMAGE
# Partitions numbers
local BOOT_PARTITION=1
@@ -98,48 +98,49 @@ mount_system() {
local DEV_IMAGE=$(losetup -Pf $1 --show)
sleep 0.5
echo -e "\033[0;31m\033[1mMount dirs $2 & $2/boot\033[0m\033[0m"
#mount $3 $2
#mount $4 $2/boot
mount "${DEV_IMAGE}p${ROOT_PARTITION}" $2
mount "${DEV_IMAGE}p${BOOT_PARTITION}" $2/boot
# Get temp directory to mount image
local MOUNT_POINT=$(mktemp -d)
echo -e "\033[0;31m\033[1mMount dirs ${MOUNT_POINT} & ${MOUNT_POINT}/boot\033[0m\033[0m"
mount "${DEV_IMAGE}p${ROOT_PARTITION}" ${MOUNT_POINT}
mount "${DEV_IMAGE}p${BOOT_PARTITION}" ${MOUNT_POINT}/boot
echo -e "\033[0;31m\033[1mBind system dirs\033[0m\033[0m"
# https://github.com/debian-pi/raspbian-ua-netinst/issues/314
echo "Mounting /proc in chroot... "
if [ ! -d $2/proc ] ; then
mkdir -p $2/proc \
&& echo "Created $2/proc"
if [ ! -d ${MOUNT_POINT}/proc ] ; then
mkdir -p ${MOUNT_POINT}/proc \
&& echo "Created ${MOUNT_POINT}/proc"
fi
mount -t proc -o nosuid,noexec,nodev proc $2/proc \
mount -t proc -o nosuid,noexec,nodev proc ${MOUNT_POINT}/proc \
&& echo "OK"
echo "Mounting /sys in chroot... "
if [ ! -d $2/sys ] ; then
mkdir -p $2/sys \
&& echo "Created $2/sys"
if [ ! -d ${MOUNT_POINT}/sys ] ; then
mkdir -p ${MOUNT_POINT}/sys \
&& echo "Created ${MOUNT_POINT}/sys"
fi
mount -t sysfs -o nosuid,noexec,nodev sysfs $2/sys \
mount -t sysfs -o nosuid,noexec,nodev sysfs ${MOUNT_POINT}/sys \
&& echo "OK"
echo "Mounting /dev/ and /dev/pts in chroot... " \
&& mkdir -p -m 755 $2/dev/pts \
&& mount -t devtmpfs -o mode=0755,nosuid devtmpfs $2/dev \
&& mount -t devpts -o gid=5,mode=620 devpts $2/dev/pts \
&& mkdir -p -m 755 ${MOUNT_POINT}/dev/pts \
&& mount -t devtmpfs -o mode=0755,nosuid devtmpfs ${MOUNT_POINT}/dev \
&& mount -t devpts -o gid=5,mode=620 devpts ${MOUNT_POINT}/dev/pts \
&& echo "OK"
# mount -t devpts none "$2/dev/pts" -o ptmxmode=0666,newinstance
# ln -fs "pts/ptmx" "$2/dev/ptmx"
# mount -t devpts none "${MOUNT_POINT}/dev/pts" -o ptmxmode=0666,newinstance
# ln -fs "pts/ptmx" "${MOUNT_POINT}/dev/ptmx"
# mount -o bind /dev $2/dev
# mount -t proc proc $2/proc
# mount -t devpts devpts $2/dev/pts
# mount -o bind /dev ${MOUNT_POINT}/dev
# mount -t proc proc ${MOUNT_POINT}/proc
# mount -t devpts devpts ${MOUNT_POINT}/dev/pts
# mount -t proc proc $2/proc
# mount -t sysfs sys $2/sys
# mount --bind /dev $2/dev
# mount -t proc proc ${MOUNT_POINT}/proc
# mount -t sysfs sys ${MOUNT_POINT}/sys
# mount --bind /dev ${MOUNT_POINT}/dev
echo -e "\033[0;31m\033[1mCopy DNS records\033[0m\033[0m" \
&& cp -L /etc/resolv.conf $2/etc/resolv.conf
&& cp -L /etc/resolv.conf ${MOUNT_POINT}/etc/resolv.conf
# https://wiki.archlinux.org/index.php/Change_root_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)
# http://www.unix-lab.org/posts/chroot/
@@ -148,15 +149,15 @@ mount_system() {
# http://unixteam.ru/content/virtualizaciya-ili-zapuskaem-prilozhenie-v-chroot-okruzhenii-razmyshleniya
# http://help.ubuntu.ru/wiki/%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_grub
echo -e "\033[0;31m\033[1mEnter chroot\033[0m\033[0m" \
&& chroot $2 /bin/bash
&& chroot ${MOUNT_POINT} /bin/bash
umount_system $2 $DEV_IMAGE
umount_system ${MOUNT_POINT} ${DEV_IMAGE}
}
execute() {
# STATIC FUNCTION
# TEMPLATE: execute $IMAGE $MOUNT_POINT $EXECUTE_FILE ...
# TEMPLATE: execute $IMAGE $EXECUTE_FILE ...
# Partitions numbers
local BOOT_PARTITION=1
@@ -166,56 +167,59 @@ execute() {
local DEV_IMAGE=$(losetup -Pf $1 --show)
sleep 0.5
echo -e "\033[0;31m\033[1mMount dirs $2 & $2/boot\033[0m\033[0m"
mount "${DEV_IMAGE}p${ROOT_PARTITION}" $2
mount "${DEV_IMAGE}p${BOOT_PARTITION}" $2/boot
# Get temp directory to mount image
local MOUNT_POINT=$(mktemp -d)
echo -e "\033[0;31m\033[1mMount dirs ${MOUNT_POINT} & ${MOUNT_POINT}/boot\033[0m\033[0m"
mount "${DEV_IMAGE}p${ROOT_PARTITION}" ${MOUNT_POINT}
mount "${DEV_IMAGE}p${BOOT_PARTITION}" ${MOUNT_POINT}/boot
echo -e "\033[0;31m\033[1mBind system dirs\033[0m\033[0m"
echo "Mounting /proc in chroot... "
if [ ! -d $2/proc ] ; then
mkdir -p $2/proc
echo "Created $2/proc"
if [ ! -d ${MOUNT_POINT}/proc ] ; then
mkdir -p ${MOUNT_POINT}/proc
echo "Created ${MOUNT_POINT}/proc"
fi
mount -t proc -o nosuid,noexec,nodev proc $2/proc \
mount -t proc -o nosuid,noexec,nodev proc ${MOUNT_POINT}/proc \
&& echo "OK"
echo "Mounting /sys in chroot... "
if [ ! -d $2/sys ] ; then
mkdir -p $2/sys
echo "Created $2/sys"
if [ ! -d ${MOUNT_POINT}/sys ] ; then
mkdir -p ${MOUNT_POINT}/sys
echo "Created ${MOUNT_POINT}/sys"
fi
mount -t sysfs -o nosuid,noexec,nodev sysfs $2/sys \
mount -t sysfs -o nosuid,noexec,nodev sysfs ${MOUNT_POINT}/sys \
&& echo "OK"
echo "Mounting /dev/ and /dev/pts in chroot... " \
&& mkdir -p -m 755 $2/dev/pts \
&& mount -t devtmpfs -o mode=0755,nosuid devtmpfs $2/dev \
&& mount -t devpts -o gid=5,mode=620 devpts $2/dev/pts \
&& mkdir -p -m 755 ${MOUNT_POINT}/dev/pts \
&& mount -t devtmpfs -o mode=0755,nosuid devtmpfs ${MOUNT_POINT}/dev \
&& mount -t devpts -o gid=5,mode=620 devpts ${MOUNT_POINT}/dev/pts \
&& echo "OK"
echo -e "\033[0;31m\033[1mCopy DNS records\033[0m\033[0m" \
&& cp -L /etc/resolv.conf $2/etc/resolv.conf
&& cp -L /etc/resolv.conf ${MOUNT_POINT}/etc/resolv.conf
echo -e "\033[0;31m\033[1m$(date) | Enter chroot\033[0m\033[0m"
script_name=$(basename $3)
script_path_root="$2/root/$script_name"
local script_name=$(basename $2)
local script_path_root="${MOUNT_POINT}/root/${script_name}"
# Copy script into chroot fs
# TODO: Find more suitable location for temporary script storage
cp "$3" "$script_path_root"
cp "$2" "${script_path_root}"
# Its important to save arguments (direct ${@:4} causes problems)
script_args="${@:4}"
script_args="${@:3}"
# Run script in chroot with additional arguments
chroot $2 /bin/sh -c "/root/$script_name $script_args"
chroot ${MOUNT_POINT} /bin/sh -c "/root/${script_name} ${script_args}"
# Removing script from chroot fs
rm "$script_path_root"
rm "${script_path_root}"
umount_system $2 $DEV_IMAGE
umount_system ${MOUNT_POINT} ${DEV_IMAGE}
}
copy_to_chroot() {
# STATIC FUNCTION
# TEMPLATE: copy_to_chroot $IMAGE $MOUNT_POINT $MOVE_FILE
# TEMPLATE: copy_to_chroot $IMAGE $MOVE_FILE $MOVE_TO
# Partitions numbers
local BOOT_PARTITION=1
@@ -225,44 +229,25 @@ copy_to_chroot() {
local DEV_IMAGE=$(losetup -Pf $1 --show)
sleep 0.5
echo -e "\033[0;31m\033[1mMount dirs $2 & $2/boot\033[0m\033[0m"
mount "${DEV_IMAGE}p${ROOT_PARTITION}" $2
mount "${DEV_IMAGE}p${BOOT_PARTITION}" $2/boot
# Get temp directory to mount image
local MOUNT_POINT=$(mktemp -d)
echo -e "\033[0;31m\033[1mBind system dirs\033[0m\033[0m"
echo "Mounting /proc in chroot... "
if [ ! -d $2/proc ] ; then
mkdir -p $2/proc
echo "Created $2/proc"
fi
mount -t proc -o nosuid,noexec,nodev proc $2/proc \
&& echo "OK"
echo "Mounting /sys in chroot... "
if [ ! -d $2/sys ] ; then
mkdir -p $2/sys
echo "Created $2/sys"
fi
mount -t sysfs -o nosuid,noexec,nodev sysfs $2/sys \
&& echo "OK"
echo "Mounting /dev/ and /dev/pts in chroot... " \
&& mkdir -p -m 755 $2/dev/pts \
&& mount -t devtmpfs -o mode=0755,nosuid devtmpfs $2/dev \
&& mount -t devpts -o gid=5,mode=620 devpts $2/dev/pts \
&& echo "OK"
echo -e "\033[0;31m\033[1mCopy DNS records\033[0m\033[0m" \
&& cp -L /etc/resolv.conf $2/etc/resolv.conf
echo -e "\033[0;31m\033[1mMount dirs ${MOUNT_POINT} & ${MOUNT_POINT}/boot\033[0m\033[0m"
mount "${DEV_IMAGE}p${ROOT_PARTITION}" ${MOUNT_POINT}
mount "${DEV_IMAGE}p${BOOT_PARTITION}" ${MOUNT_POINT}/boot
echo -e "\033[0;31m\033[1m$(date) | Enter chroot\033[0m\033[0m"
script_name=$(basename $3)
script_path_root="$2/root/$script_name"
file_name=$(basename $2)
file_path_root="${MOUNT_POINT}$3/${file_name}"
# Copy script into chroot fs
# TODO: Find more suitable location for temporary script storage
cp "$3" "$script_path_root"
if [ ! -d ${file_path_root} ] ; then
mkdir -p ${file_path_root} \
&& echo "Created ${file_path_root}"
fi
cp "$2" "${file_path_root}"
umount_system $2 $DEV_IMAGE
umount_system ${MOUNT_POINT} ${DEV_IMAGE}
}
umount_system() {
@@ -372,8 +357,8 @@ echo "\$7: $7"
case "$1" in
mount_system)
# mount_system $IMAGE $MOUNT_POINT
mount_system $2 $3;;
# mount_system $IMAGE
mount_system $2;;
get_image)
# get_image $BUILD_DIR $RPI_DONWLOAD_URL $IMAGE_NAME
@@ -388,11 +373,11 @@ case "$1" in
publish_image $2 $3 $4 $5 $6 "$7";;
execute)
# execute $IMAGE $MOUNT_POINT $EXECUTE_FILE ...
execute $2 $3 $4 ${@:5};;
# execute $IMAGE $EXECUTE_FILE ...
execute $2 $3 ${@:4};;
copy_to_chroot)
# copy_to_chroot $IMAGE $MOUNT_POINT $MOVE_FILE
# copy_to_chroot $IMAGE $MOVE_FILE $MOVE_TO
copy_to_chroot $2 $3 $4;;
*)