Browse Source
Merge pull request #271 from drewmoseley/parallelbuilds
Use unique work directories when building with docker.
2.3.x
Kristian Amlie
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with
21 additions and
12 deletions
-
.gitignore
-
README.md
-
docker-mender-convert
-
logs/.gitkeep
-
mender-convert
-
mender-convert-modify
-
modules/log.sh
-
work/.gitkeep
|
|
@ -1,8 +1,7 @@ |
|
|
|
deploy |
|
|
|
input |
|
|
|
work |
|
|
|
rootfs_overlay_demo/* |
|
|
|
mender_local_config |
|
|
|
*.xml |
|
|
|
*.html |
|
|
|
convert.log |
|
|
|
logs/convert.log* |
|
|
|
|
|
@ -116,7 +116,7 @@ MENDER_ARTIFACT_NAME=release-1 ./docker-mender-convert \ |
|
|
|
``` |
|
|
|
|
|
|
|
Conversion will take 10-30 minutes, depending on image size and resources |
|
|
|
available. You can watch `work/convert.log` for progress and diagnostics |
|
|
|
available. You can watch `WORKDIR/convert.log` for progress and diagnostics |
|
|
|
information. |
|
|
|
|
|
|
|
After it finishes, you can find your images in the `deploy` directory on your |
|
|
|
|
|
@ -25,13 +25,23 @@ MENDER_CONVERT_DIR="$(pwd)" |
|
|
|
#Pass in version in-case we are added as a git submodule |
|
|
|
MENDER_CONVERT_VERSION=$(git_mender_convert_version) |
|
|
|
|
|
|
|
# Create a unique work directory so we can run multiple containers in parallel |
|
|
|
WORK_DIR=$(mktemp -d -p $(pwd) -t work.XXXX) |
|
|
|
WORK_SUFFIX=$(echo $WORK_DIR | awk -F. '{print $NF}') |
|
|
|
LOG_FILE="convert.log.${WORK_SUFFIX}" |
|
|
|
|
|
|
|
set +e |
|
|
|
docker run \ |
|
|
|
--rm \ |
|
|
|
-v $MENDER_CONVERT_DIR:/mender-convert \ |
|
|
|
-v $WORK_DIR:/mender-convert/work \ |
|
|
|
--privileged=true \ |
|
|
|
--cap-add=SYS_MODULE \ |
|
|
|
-v /dev:/dev \ |
|
|
|
-v /lib/modules:/lib/modules:ro \ |
|
|
|
--env MENDER_ARTIFACT_NAME=${MENDER_ARTIFACT_NAME} \ |
|
|
|
--env MENDER_CONVERT_VERSION=${MENDER_CONVERT_VERSION} \ |
|
|
|
--env MENDER_CONVERT_LOG_FILE=logs/${LOG_FILE} \ |
|
|
|
$IMAGE_NAME "$@" |
|
|
|
|
|
|
|
[ $? -eq 0 ] && rmdir ${WORK_DIR} |
|
|
|
|
|
@ -18,8 +18,9 @@ source modules/bootstrap.sh |
|
|
|
source modules/cliparser.sh |
|
|
|
source modules/decompressinput.sh |
|
|
|
|
|
|
|
mkdir -p work |
|
|
|
touch work/convert.log |
|
|
|
export MENDER_CONVERT_LOG_FILE=$(pwd)/${MENDER_CONVERT_LOG_FILE:-logs/convert.log} |
|
|
|
touch ${MENDER_CONVERT_LOG_FILE} |
|
|
|
chown -R --reference=. ${MENDER_CONVERT_LOG_FILE} |
|
|
|
|
|
|
|
############################################################################### |
|
|
|
# Declaration of important variables for this file # |
|
|
@ -66,11 +67,10 @@ function trap_exit() { |
|
|
|
EXIT_CODE=$? |
|
|
|
if [[ ${EXIT_CODE} -ne 0 && ${EXIT_CODE} -ne ${FATAL_EXIT_CODE} ]]; then |
|
|
|
log_error "mender-convert failed" |
|
|
|
[ -e work/convert.log ] && tac work/convert.log | sed '/DEBUG/q' | tac | sed 's/Running/When running/' |
|
|
|
[ -e ${MENDER_CONVERT_LOG_FILE} ] && tac ${MENDER_CONVERT_LOG_FILE} | sed '/DEBUG/q' | tac | sed 's/Running/When running/' |
|
|
|
log_error "mender-convert exit code: ${EXIT_CODE}" |
|
|
|
fi |
|
|
|
mv work/convert.log convert.log |
|
|
|
sudo rm -rf work |
|
|
|
sudo rm -rf work/* |
|
|
|
} |
|
|
|
|
|
|
|
function trap_term() { |
|
|
|
|
|
@ -164,9 +164,9 @@ kernel_imagetype=kernel |
|
|
|
initrd_imagetype=initrd |
|
|
|
EOF |
|
|
|
|
|
|
|
run_and_log_cmd "ln -s ${kernel_imagetype} work/rootfs/boot/kernel" |
|
|
|
run_and_log_cmd "sudo ln -s ${kernel_imagetype} work/rootfs/boot/kernel" |
|
|
|
if [ "${initrd_imagetype}" != "" ]; then |
|
|
|
run_and_log_cmd "ln -s ${initrd_imagetype} work/rootfs/boot/initrd" |
|
|
|
run_and_log_cmd "sudo ln -s ${initrd_imagetype} work/rootfs/boot/initrd" |
|
|
|
fi |
|
|
|
|
|
|
|
# For partuuid support grub.cfg expects dedicated variables to be added |
|
|
@ -278,7 +278,7 @@ esac |
|
|
|
run_and_log_cmd "sudo mkdir -p work/rootfs/etc/mender/scripts/" |
|
|
|
run_and_log_cmd "echo -n ${VERSION_STRING} | sudo tee work/rootfs/etc/mender/scripts/version" |
|
|
|
|
|
|
|
log_info "Installing a custom /etc/fstab (see work/convert.log for more info)" |
|
|
|
log_info "Installing a custom /etc/fstab (see ${MENDER_CONVERT_LOG_FILE} for more info)" |
|
|
|
|
|
|
|
if [ "${MENDER_GRUB_EFI_INTEGRATION}" == "y" ]; then |
|
|
|
boot_part_mountpoint="/boot/efi" |
|
|
|
|
|
@ -16,7 +16,7 @@ |
|
|
|
|
|
|
|
# This must be an absolute path, as users might call the log functions |
|
|
|
# from sub-directories |
|
|
|
log_file="${PWD}/work/convert.log" |
|
|
|
log_file="${MENDER_CONVERT_LOG_FILE:-${PWD}/work/convert.log}" |
|
|
|
|
|
|
|
|
|
|
|
# Add some colour to the log messages |
|
|
|