Remote Debugging CI/CD Pipelines
One of the key features of NUKE is that you can run and debug builds locally as opposed to repeatedly triggering CI/CD pipeline with a lot of logging all over the place. Based on broad feedback, this solves more than 90% of the cases where YAML and other schemas are difficult to troubleshoot. While the vast majority of developers has yet to experience this advantage, we will try to go a step further.
The real missing part for CI/CD automation is a local development experience.
— r3kc4h0rt3r‏ (@retrohack3r) July 21, 2022
Sounds counter-intuitive but being able to run the E2E CI/CD pipeline locally and validate failures saves engineers from the 20-minute push, coffee, failure, fix loop.
The real missing part for CI/CD automation is a local development experience.
— r3kc4h0rt3r‏ (@retrohack3r) July 21, 2022
Sounds counter-intuitive but being able to run the E2E CI/CD pipeline locally and validate failures saves engineers from the 20-minute push, coffee, failure, fix loop.
In practice, differences between your local and CI/CD environment are unavoidable. Even with dockerized environments, you can't rule out misconfiguration of ports, volumes, or services. Beyond build automation, many of us have also faced flaky tests and race conditions that never occurred locally. Overall, problems in CI/CD pipelines are very tedious and time-consuming to investigate.
In this post, we will take a look at a proof-of-concept that allows you to attach the debugger to any remote process running in your CI/CD environment. Our tools of choice are JetBrains Rider and GitHub Actions, but the principles work much the same with any other tools.