Browse Source

Use unique work directories when building with docker.

This allows multiple builds to be run in parallel.

Changelog: Title
Signed-off-by: Drew Moseley <drew.moseley@northern.tech>
2.3.x
Drew Moseley 4 years ago
parent
commit
be1099b3e9
  1. 3
      .gitignore
  2. 2
      README.md
  3. 10
      docker-mender-convert
  4. 0
      logs/.gitkeep
  5. 10
      mender-convert
  6. 2
      mender-convert-modify
  7. 2
      modules/log.sh
  8. 0
      work/.gitkeep

3
.gitignore

@ -1,8 +1,7 @@
deploy
input
work
rootfs_overlay_demo/*
mender_local_config
*.xml
*.html
convert.log
logs/convert.log*

2
README.md

@ -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

10
docker-mender-convert

@ -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}

0
logs/.gitkeep

10
mender-convert

@ -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() {

2
mender-convert-modify

@ -279,7 +279,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"

2
modules/log.sh

@ -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

0
work/.gitkeep

Loading…
Cancel
Save