I have a GitHub Action which generates a new balenaOS image with my application preloaded each time a tag is pushed to the repository. Last week it was working, but I tagged a release today and the balena preload stage failed with the following output:
Run set -euo pipefail
Building Docker preloader image. [ ] 0%
Building Docker preloader image. [=== ] 12%
Building Docker preloader image. [====== ] 25%
Building Docker preloader image. [========= ] 37%
Building Docker preloader image. [============ ] 50%
Building Docker preloader image. [=============== ] 62%
Building Docker preloader image. [================== ] 75%
Building Docker preloader image. [===================== ] 87%
Building Docker preloader image. [========================] 100%
An error has occurred executing internal preload command 'get_image_info':
{"command":"get_image_info","parameters":{}}
Status code: 1
Error: Traceback (most recent call last):
File "/usr/src/app/preload.py", line 978, in <module>
result = method(**data.get("parameters", {}))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/preload.py", line 934, in get_image_info
"free_space": free_space(),
^^^^^^^^^^^^
File "/usr/src/app/preload.py", line 796, in free_space
with flasher_root.mount_context_manager() as mountpoint:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/contextlib.py", line 144, in __exit__
next(self.gen)
File "/usr/src/app/preload.py", line 179, in mount_context_manager
with device_mount_context_manager(device) as mountpoint:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/contextlib.py", line 144, in __exit__
next(self.gen)
File "/usr/src/app/preload.py", line 172, in device_mount_context_manager
umount(mountpoint, **SH_OPTS)
File "/usr/lib/python3.12/site-packages/sh.py", line 1524, in __call__
return RunningCommand(cmd, call_args, stdin, stdout, stderr)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/sh.py", line 788, in __init__
self.wait()
File "/usr/lib/python3.12/site-packages/sh.py", line 845, in wait
self.handle_command_exit_code(exit_code)
File "/usr/lib/python3.12/site-packages/sh.py", line 869, in handle_command_exit_code
raise exc
sh.ErrorReturnCode_32:
RAN: /bin/umount /tmp/tmp3fib5u3l
STDOUT:
STDERR:
umount: /tmp/tmp3fib5u3l: target is busy.
Additional information may be available with the `--debug` flag.
For further help or support, visit:
https://docs.balena.io/reference/balena-cli/latest#support-faq-and-troubleshooting
Error: Process completed with exit code 1.
The relevant section of the GitHub Action that is failing is:
- name: Preload gateway release into image
run: |
set -euo pipefail
# Preload the release that was just created, by commit to be sure it's the right one
"${BALENA_BIN}" preload "${{ steps.os_image.outputs.image_path }}" --fleet "${BALENA_FLEET}" --commit "${{ steps.deploy_release.outputs.release_commit }}" --no-pin-device-to-release
Am I doing something wrong or is this a problem with Balena’s infrastructure?
Thank you