We don't need to perform a git clone of the repo at every single step of our pipeline, files we need between steps can be persisted with artifacts.
I suggest you move the logic for the following into (b)ash functions:
- git clone (int depth)
- artifact restore (string step_name)
that way users can run the clone or the artifact restore when and how they want.
At the moment it's costing us 55secs for each step, when we only need it on one step per pipeline.