I have a Windows desktop app that I am writing a CI process for on AWS and am looking for some architecture advice regarding my pipeline. The application requires a reboot to install due to some low level device driver and registry modifications.
My goal is to have CI do the following:
- spin up a new Windows EC2
- run an install script of the software
- reboot
- run some custom scripts for integration testing
- persist the EC2 so I can RDP in to examine things if required
I have a scheduled script that will tear the instance down after a period.
Currently, I have CodePipeline, CodeBuild and CodeDeploy working to create my Windows EC2, and I can install my app via a startup script. However, I would like some advice on how to proceed with the restart and if the above CICD tools offer any specific tooling for this - or will I require a custom pipeline step?
Additionally, I originally planned to just run the install and integration tests in the buildspec.yml but the required restart made me think this is not possible, hence the custom EC2 setup. I run unit tests in the buildspec.yml currently that does not require the full install. Is this correct?