Concurrent CI builds with separate checkouts

I’m experiment with GitLab CI and I have found one unexpected issue with concurrent builds. I’m using Docker for builds and the runner is configured to allow concurrent builds. When I create multiple jobs in the same stage of a project, as expected, but they all work on the same source directory. So if they all need to write a particular file, the result is a mess. Is there an easy way to make sure that each job has its own checkout of the source code where it can write any files without conflicting with other jobs?