CLONE is only available if “Use new hypervisor” is enabled in your
organization’s settings.
CLONE [repository URL] (DEFAULT=branch-name) (files...) [destination]
The CLONE instruction moves files from a repository to the runner.
Files can be:
- relative (to the layerfile location for sources, and WORKDIR location, or /root if not specified for destination)
 - absolute (from the root of the repository for sources, and filesystem root for destination)
 
CLONE directive will automatically add authentication credentials if your account
is connected with the associated repository.
If the current Layerfile’s branch is, e.g., feat-1, then CLONE will try to
check out the feat-1 branch from [repository URL]. If that branch doesn’t
exist, it will fall back to the branch specified by DEFAULT=.
This facilitates multi-repository development by allowing changes to be made to
libraries concurrently without needing them to be merged to be used.
CLONE watches files in the same manner as COPY, this means that steps will
only re-run if files in the cloned repository change.
Examples
- Use 
CLONE https://github.com/webappio/library.git DEFAULT=master /libraryto clone the current branch (e.g., feat-1) if it exists, falling back to master otherwise to the/librarydirectory in the runner. - Use 
CLONE https://github.com/my-project/hello.git /hello-projectto copy the entire repository contents to the destination/hello-projectin the runner. - Use
CLONE https://github.com/my-project/hello.git DEFAULT=main /package.json /package-lock.json ./to copypackage.jsonandpackage-lock.jsonfrom the specified project, into the working directory in the runner.