i want to build a CD pipeline for some bootstrap scripts that perform auto setup on firstboot for embedded ARM devices.
However, I do not need a factory-fresh embedded device to run the bootstrap scripts. Instead, I can simulate the process on an already operating device.
The System provides an API to install customer updates on it.
So my CI/CD pipeline would look like that:
- Part 1 (On a regular linux Server): Gather all necessary components of the deploy package, put them together in a specific structure and make a tarball of it.
- Part 2 (On the embedded device):
- Get the tarball
- Call the update api of the embedded device with the location of the tarball.
- Wait until the entire update process is finished (the runner should poll dbus for that status information).
- Update process will copy files, remounting file systems, reboot the device and enter an in between update stage, start customer services and verify the successful deployment of the update tarball. If no successful deployment was detected, then the device will reboot twice and ultimately reset itself to the pre-update state entirely.
So my question is, how to tell the runner, that a processing of the CD pipeline contains several reboots of the system which means that the runner process will terminate and respwan multiple times. Is this even possible?
Bonus question: If the above is not possible to do at all, would it be possible to use an ssh executor, that can run on an always on machine and executes things on the remote machine and also is able to not fail when the ssh connection gets cut (maybe several times).
Thanks in advance