Continuous Integration (CI) is a widely used software development methodology advocating for the immediate integration of changes to code builds. One solution to the development bottlenecks resulting from frequent builds induced by the methodology is to use parallel/distributed workflows. In addition to the intricacies associated with devising distributed choreographies of test-and-build tasks, these workflows my need to contend with failure and strategies for recovery. In present solutions, the onus of devising such workflows is left to the user who has to describe them in terms of low-level error-prone scripts. We propose a high-level formalism for describing distributed CI workflows imbued with reversible behaviour to support automatic test generation and flakiness detection. We show how executable code is automatically generated from these workflow descriptions with the help of realistic software testing scenarios.